正确使用distinct来计算来自2个不同表的数据

时间:2017-07-06 21:00:11

标签: mysql sql

我有两个不同的表,其中有相似的数据,一个是零件编号表,每个零件编号都是唯一的,表格描述零件编号,另一个表格是一组报价,可以有一个零件编号在桌子上多次重复。

示例:

PN Table

partNum|someOther
-------|---------
1234   | data
12345  | more data
1234-0 | no data

Quotes Table

partNum|QuoteNum
-------|---------
1234   | 1
12345  | 2
1234   | 3
1234   | 4
1234   | 5
12345  | 6
1234-0 | 7

我有这个声明我正在使用

SELECT 
    DISTINCT p.partNum AS pn,
    COUNT(q.partNum) AS prevQuotes
FROM
    PN p
LEFT JOIN
    Quotes q ON p.partNum = q.partNum
WHERE
    stripped_pn LIKE '123%'

我原本期望该语句返回多个结果以及Quote表中的出现次数,除了我只得到一个带有计数的结果。 我需要做什么修改才能获得PN在报价表中出现的次数?

1 个答案:

答案 0 :(得分:1)

我很惊讶你的陈述是有效的。聚合函数COUT需要GROUP BY,如下所示:

SELECT 
    p.partNum AS pn,
    COUNT(q.partNum) AS prevQuotes
FROM
    PN p
LEFT JOIN
    Quotes q ON p.partNum = q.partNum
WHERE
    stripped_pn LIKE '123%'
GROUP BY p.partNum