LEFT OUTER JOIN仅选择一行

时间:2017-06-11 10:39:58

标签: mysql sql

我正在尝试使用方法SELECT从我的数据库中LEFT OUTER JOIN数据,但是当我运行语法时,结果只有一行。我确信结果必须是更多行。

我还尝试了FULL OUTER JOIN方法,而不是LEFT OUTER JOIN。但是当我这样做时,我得到一个语法错误。

有人知道我为什么只开了一排吗?

这是我的sql语法:

SELECT
    cus.cus_id
,   cus.name_cus
,   cus.address, count(invoice.id) as id2
,   CONCAT('€ ', ROUND(SUM(invoice.total),2)) as total
,   cus.id
FROM cus
LEFT OUTER JOIN invoice
ON cus.cus_id = invoice.cus_id

1 个答案:

答案 0 :(得分:2)

您正在使用没有GROUP BY子句的聚合函数:

SELECT
    cus.cus_id
,   cus.name_cus
,   cus.address
,   count(invoice.id) as id2
,   CONCAT('€ ', ROUND(SUM(invoice.total),2)) as total
,   cus.id
FROM cus
LEFT OUTER JOIN invoice ON cus.cus_id = invoice.cus_id
GROUP BY cus.cus_id, cus.name_cus, cus.address, cus.id

虽然您只需要按唯一ID(即cus.id)进行分组,但您应该添加其他未汇总到GROUP BY子句的字段,即使它们没有创建其他组。 / p>