我有4个表的列名id和date相同。我要做的是获取所有4个表中出现的所有id,并且只按最近的日期列出公共id。
例如:
A
id date
1 11/30/02
1 10/01/02
2 11/15/05
4 12/01/03
B
id date
1 11/30/02
1 10/01/02
3 12/1/05
4 12/01/03
C
id date
1 11/30/02
4 12/01/03
D
id date
1 11/30/02
4 12/01/03
5 09/01/02
现在我想运行一个查询并创建另一个如下所示的表:
E
id date
1 11/30/02
4 12/01/03
我试过很多东西,但都没有什么好运气。我很感激你的帮助。
谢谢你
最佳答案
例如。
SELECT a.id
, MAX(GREATEST(a.date,b.date,c.date,d.date)) date
FROM a
JOIN b
ON b.id = a.id
JOIN c
ON c.id = a.id
JOIN d
ON d.id = a.id
GROUP
BY a.id
或者。。。
SELECT id,MAX(date) date
FROM
( SELECT tbl
, id
, MAX(date) date
FROM
( SELECT 'a' tbl, id, date FROM a
UNION
SELECT 'b', id, date FROM b
UNION
SELECT 'c', id, date FROM c
UNION
SELECT 'd', id, date FROM d
) x
GROUP
BY tbl
, id
) y
GROUP
BY id
HAVING COUNT(*) = 4;
当然,这些解决方案假设您的日期存储为日期数据类型。
关于mysql - MySQL:查询4个表时需要帮助。寻找所有表格中的ID,并只列出最近的日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20335265/