假设PRICES.date是DATETIME数据类型,请使用:
SELECT pd.id,
pd.name,
pr.price
FROM PRODUCTS pd
LEFT JOIN PRICES pr ON pr.id = pd.id
AND DATE(pr.date) = CURRENT_DATE
我使用DATE function来删除时间部分,因为CURRENT_DATE将不包括DATETIME记录时的时间部分.
在此示例中,在JOIN生成之前应用日期条件.它就像一个派生表,在JOIN生成之前过滤掉信息 – 这将产生与WHERE子句中指定条件不同的结果.
要获取明天的产品和价格清单,请使用:
SELECT pd.id,
pd.name,
pr.price
FROM PRODUCTS pd
LEFT JOIN PRICES pr ON pr.id = pd.id
AND DATE(pr.date) = DATE_ADD(CURRENT_DATE, INTERVAL 1 DAY)
参考:
如果您想在单个查询中同时获得今天和明天的价格,请使用:
SELECT pd.id,
pd.name,
pr1.price AS price_today,
pr2.price AS price_tomorrow
FROM PRODUCTS pd
LEFT JOIN PRICES pr1 ON pr1.id = pd.id
AND DATE(pr1.date) = CURRENT_DATE
LEFT JOIN PRICES pr2 ON pr2.id = pd.id
AND DATE(pr2.date) = DATE_ADD(CURRENT_DATE, INTERVAL 1 DAY)