如何按日期从两个Mysql表中获取增量
我有两个结构相同的mysql表。现在我想得到表1中所有比表2中相同记录更新的记录如何按日期从两个Mysql表中获取增量,mysql,Mysql,我有两个结构相同的mysql表。现在我想得到表1中所有比表2中相同记录更新的记录 table 1 id name namespace updated 437 test test/test1 2016-09-02 09:17:13 436 test test/test2 2016-09-04 09:17:13 435 test test/test3 2016-09-05 09:17:13 table 2 id name namespace
table 1
id name namespace updated
437 test test/test1 2016-09-02 09:17:13
436 test test/test2 2016-09-04 09:17:13
435 test test/test3 2016-09-05 09:17:13
table 2
id name namespace updated
433 test test/test1 2016-09-02 09:17:13
434 test test/test2 2016-09-04 09:17:13
437 test test/test3 2016-09-04 09:17:13
结果总是超出预期
这是我的声明
SELECT a.`id` , a.`name` , a.`namespace`, a.`created` ,
a.`updated`
FROM table1 AS a
LEFT JOIN table2 AS b ON a.`name` = b.`name`
AND a.`namespace` = b.`namespace`
WHERE a.`updated` > b.`updated`
怎么了
多谢各位 如果使用左连接,则在where子句中设置与左连接表相关的值,否则这些值将用作内部连接 在ON子句中添加和 最后检查未连接行的空左连接值
SELECT a.`id` , a.`name` , a.`namespace`, a.`created` ,
a.`updated`
FROM table1 AS a
LEFT JOIN table2 AS b ON a.`name` = b.`name`
AND a.`namespace` = b.`namespace` and a.`updated` > b.`updated`
where b.id is null
及
尽量避免毫秒
SELECT a.`id` , a.`name` , a.`namespace`, a.`created` ,
a.`updated`
FROM table1 AS a
LEFT JOIN table2 AS b ON a.`name` = b.`name`
AND a.`namespace` = b.`namespace`
and DATE_FORMAT(a.`updated`,'%Y-%m-%d %H:%i') > DATE_FORMAT(b.`updated`,'%Y-%m-%d %H:%i')
where b.id is null
好的,我提出了一个解决方案,它总是为每个名称空间返回最新的id 为此,我创建了一个
SELECT * FROM
(SELECT * FROM table1
UNION
SELECT * FROM table2
ORDER BY updated DESC
) A
GROUP BY A.namespace
ORDER BY updated DESC
这没有捕获到一个id可能是2个名称空间的最新id
输出应该是什么?顺便说一句,where子句将左连接转换为一个内部连接,每个id的名称和命名空间都相同?它应该只返回id为435的记录,因为它比表2 437中的等效项新。每个id的名称和命名空间都不相同。谢谢。但这也会返回两个表中“更新”相同的记录。我只想更新列的数据类型??你有几秒钟的时间?谢谢你的努力和努力。但这给了我3张唱片。对于我之前提到的sql,我得到了正确的结果,这很奇怪。但当我使用真实数据运行sql时,它会返回更新日期相同的记录。我只希望表1中的所有记录在col'updated'中具有更新的日期。顺便说一句,id不匹配。@stacker啊,好的,我不明白您到底想要实现什么。我想我的方法行不通,但我以后会再研究。