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?

请帮帮我。

4

2 回答 2

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)
于 2012-04-13T20:30:12.370 回答
0

ALEFT 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
于 2012-04-13T23:42:58.360 回答