嗨我需要一些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?
请帮帮我。
答案 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