以customer表为例
CREATE TABLE customer (
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20));
CREATE TABLE payments (
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
customer_id INT(11),
month INT(2),
year INT(4),
amount INT(5),
FOREIGN KEY fk_cust(customer_id)
REFERENCES customer(id));payments表包含有关客户付款的月份、年份和金额的信息。
我在编写SELECT查询时遇到了问题。结果应该包含所有客户特定年份的所有月份,如果客户没有为特定月份付款,则该月份的付款列应该为空。
SELECT * FROM customers c
LEFT JOIN payments p ON c.id = p.customer_id AND p.year = 2017如果我运行上面的查询,我只得到具有付款月份的行。
我为任何错误提前道歉(我是MySQL和StackOverflow的新手)。
编辑:查询应该返回不存在付款的月份的条目。例如,如果客户仅在6月份付款,则查询也应返回其他月份的条目,并将空值作为付款。
发布于 2017-02-07 15:42:45
它实际上是相反的连接:
Select * from payments p
left join customers c
on p.customer_id = c.idhttps://stackoverflow.com/questions/42084158
复制相似问题