如何显示一个表的所有结果并检查条件

时间:2012-04-13 20:28:17

标签: mysql database left-join

嗨我需要一些mysql查询的帮助。我希望显示表A中的所有数据,无论什么,同时显示表B是否已通过当前日期,即使日期已过,我仍希望显示所有TABLE 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?

请帮帮我。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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