2012-07-31 99 views
0

如何在Mysql中选择2条记录中的最后日期?如何在Mysql中选择2条记录中的最后日期

表A

SID NAME Sex 
1 Jam M 
2 Da F 

表B

ID Title SID Date 
    1 A  1 2012-07-31 09:57:10 
    2 NULL 1 2012-07-31 09:57:13 
    3 A  2 2012-07-31 10:10:13 
    4 NULL 2 2012-07-31 10:57:13 

欲内连接这两个表,

但仅选择一个只记录表B的(不同的SID的),其中标题不为空然后显示

最大标题为空字段。

结果要空标题的最大日期:

ID Name Title SID Date 
1 Jam A  1 **2012-07-31 09:57:13** 
2 DA A  2 **2012-07-31 10:57:13** 

如何做到这一点?

回答

0
SELECT b.ID, a.NAME, b.Title, b.SID, b.Datea 
from tablea a left outer join 
    ((SELECT sid, MAX(datea) AS latest 
     FROM tableb 
      where title is not null 
      GROUP BY sid) AS dt 
INNER JOIN tableb b ON b.sid= dt.sid and b.datea=dt.latest) 
on a.sid=b.sid 
0

我觉得这样的事情会为你工作:

SELECT b.ID, a.NAME, b.Title, b.SID, b.Date 
FROM TABLEA a 
    INNER JOIN (SELECT SID, IFNULL(Title, "") AS Title, 
         MAX(IF(Title IS NULL, Date, NULL)) Date 
       FROM TABLEB GROUP BY SID) b 
     ON a.SID = b,SID; 
0

试试我的代码(它的工作原理):

SELECT b.id, b.title, b.sid, b.date 
    FROM table_b as b 
    JOIN table_a as a ON a.sid = b.sid 
    WHERE b.id in (SELECT MAX(id) FROM table_b GROUP BY sid) 
+0

PLZ遵循代码标准。为mysql关键字使用CAPS。这将更容易阅读 – diEcho 2012-07-31 04:46:42

+0

对不起,我是新手在这里XD – 2012-08-01 06:31:05

相关问题