我有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/

10-12 14:16
查看更多