2012-04-13 51 views
0

嗨,我需要一些帮助为mysql查询。我想要显示表A的所有数据,不管是什么,同时也显示表B是否有通过当前日期,即使日期已过,我仍然想要显示所有表A的结果。如何显示一个表中的所有结果并检查条件

TABLE A 
AID 
NAME 
ADDRESS 

TABLE B 
BID 
DETAIL 
DATE 
AID 

SELECT a.*, b.bid 
FROM TABLE A 
LEFT JOIN TABLE B 
ON A.AID = B.AID 
WHERE date > DATE_SUB(CURDATE(), INTERVAL 1 DAY) //how to play with this? 

请帮助我。

回答

3
SELECT v.*, b.bid 
FROM TABLE A 
LEFT JOIN TABLE B 
ON A.AID = B.AID AND B.date > DATE_SUB(CURDATE(), INTERVAL 1 DAY) 
+0

哇从来没有想到这一点。 非常感谢! – Eric 2012-04-13 20:33:11

0

一个LEFT JOIN也可以返回多行,每行A - 没有在你的问题说,有不能在B符合条件的多行。您必须GROUP BY(或使用DISTINCT)才能避免这种情况。例如:

SELECT a.*, max(b.date) AS last_date 
FROM a 
LEFT JOIN b ON a.aid = b.aid AND b.date >= curdate() 
GROUP BY a.aid 
+0

指出,非常感谢 – Eric 2012-04-14 11:13:51

相关问题