Mysql 双表条件查询
我在下面提到了两个表格:Mysql 双表条件查询,mysql,Mysql,我在下面提到了两个表格: Table1 ID key Val1 Date1 A-1 xyz-ze AA 2018-10-01 15:16:20 A-1 xyz-ze AC 2018-10-02 18:19:40 A-2 xyi-ze BV 2018-07-01 15:16:20 A-2 xyi-ze
Table1
ID key Val1 Date1
A-1 xyz-ze AA 2018-10-01 15:16:20
A-1 xyz-ze AC 2018-10-02 18:19:40
A-2 xyi-ze BV 2018-07-01 15:16:20
A-2 xyi-ze CR 2018-03-01 19:22:37
A-2 xyi-ze BR 2018-10-03 21:17:24
Table2
ID key Val2 Date2
A-1 xyz-ze AA 2018-10-01 15:16:20
A-2 xyi-ze BR 2018-10-03 22:47:56
通过使用上面的表,我想获取Val1和Val2,但是考虑到Date1,Val1应该是最早的值,然后将Val1与Val2匹配,并基于此给出状态
所需输出:
ID key Val1 Val2 Date1 Date2 Status
A-1 xyz-ze AA AA 2018-10-01 15:16:20 2018-10-01 15:16:20 TRUE
A-2 xyi-ze CR BR 2018-03-01 19:22:37 2018-10-01 15:16:20 FALSE
您可以使用自联接:
SELECT t1.ID, t1.`key`, t1.Val1, t1.Date1, t2.Date1
FROM Table1 t1
LEFT JOIN Table1 t2
ON t1.ID = t2.ID AND t1.`key` = t2.`key` AND t2.Date1 < t1.Date1
通过这种方式,您可以使用以下各项确定最早的每组记录:
WHERE t2.Date1 IS NULL
因此,最终查询将是:
SELECT t1.ID, t1.`key`, t1.Val1, t3.Val2, t1.Date1, t3.Date2
FROM Table1 t1
LEFT JOIN Table1 t2 ON t1.ID = t2.ID AND t1.`key` = t2.`key` AND t2.Date1 < t1.Date1
INNER JOIN Table2 AS t3 ON t1.ID = t3.ID AND t1.`key` = t3.`key`
WHERE t2.Date1 IS NULL
它给了我价值2的价值Null@VectorJX这是不可能的,因为表2内部连接到表1。可能是你打错了表格别名?
SELECT t1.ID, t1.`key`, t1.Val1, t3.Val2, t1.Date1, t3.Date2
FROM Table1 t1
LEFT JOIN Table1 t2 ON t1.ID = t2.ID AND t1.`key` = t2.`key` AND t2.Date1 < t1.Date1
INNER JOIN Table2 AS t3 ON t1.ID = t3.ID AND t1.`key` = t3.`key`
WHERE t2.Date1 IS NULL