首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于从两个表合并数据的SQL查询

用于从两个表合并数据的SQL查询
EN

Stack Overflow用户
提问于 2017-02-07 15:33:24
回答 1查看 70关注 0票数 0

以customer表为例

代码语言:javascript
复制
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查询时遇到了问题。结果应该包含所有客户特定年份的所有月份,如果客户没有为特定月份付款,则该月份的付款列应该为空。

代码语言:javascript
复制
SELECT * FROM customers c
LEFT JOIN payments p ON c.id = p.customer_id AND p.year = 2017

如果我运行上面的查询,我只得到具有付款月份的行。

我为任何错误提前道歉(我是MySQL和StackOverflow的新手)。

编辑:查询应该返回不存在付款的月份的条目。例如,如果客户仅在6月份付款,则查询也应返回其他月份的条目,并将空值作为付款。

EN

回答 1

Stack Overflow用户

发布于 2017-02-07 15:42:45

它实际上是相反的连接:

代码语言:javascript
复制
   Select * from payments p 
   left join customers c 
       on p.customer_id = c.id
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42084158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档