СЧИТАЙТЕ по месяцам (метка времени Unix) в одной таблице1 и запишите результат в таблицу 2 - PullRequest
2 голосов
/ 17 февраля 2012

У меня есть таблица1, по которой я делаю этот запрос

SELECT DATE_FORMAT(FROM_UNIXTIME(t.TSTAMP), "%Y-%m") AS "timePeriod", COUNT(*) AS "prod1"

дает идеальный результат для меня в 2 столбца с col'timePeriod 'и col'prod1'.Теперь я хотел бы обновить table2.prod1, где первичным ключом является «timePeriod».

Я пытался

Ответы [ 2 ]

3 голосов
/ 17 февраля 2012

Как-то так ... Хотя я не смог проверить это.

UPDATE table2 AS T2
INNER JOIN
(
    SELECT DATE_FORMAT(FROM_UNIXTIME(TSTAMP), "%Y-%m") AS "timePeriod",
    COUNT(*) AS prod1 FROM table1
    GROUP BY DATE_FORMAT(FROM_UNIXTIME(TSTAMP), "%Y-%m")
) AS T1 USING (timePeriod)
SET T2.prod1 = T1.prod1;
1 голос
/ 17 февраля 2012

Это будет делать, как вы указали

INSERT 
IGNORE // include this if you want conflicts to be ignored
INTO table2 (
    timePeriod,
    prod1
)
SELECT 
    DATE_FORMAT(FROM_UNIXTIME(t.TSTAMP), "%Y-%m"),
    COUNT(*)

// you didn't include a "FROM" so added relevant place here
FROM table1 

// Include this if you want conflicts to append to the existing row
ON DUPLICATE KEY UPDATE prod1 = prod1 + VALUES(prod1) 

// Include this if you want conflicts to replace the existing row
ON DUPLICATE KEY UPDATE prod1 = VALUES(prod1) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...