MySQL SELECT DISTINCT返回不同的结果

时间:2014-05-21 14:03:49

标签: mysql sql distinct

我无法弄清楚为什么会这样。在MySQL Query之后返回49行,但每行中的“Total”显示为48。

SELECT DISTINCT t2.CIN, t1.Name, 
  (SELECT COUNT(DISTINCT CIN) FROM `cSignatoryAssociations` WHERE DIN ='00016902') As Total
FROM `cSignatoryAssociations` t2
LEFT JOIN `cRoC` t1 ON t1.CIN = t2.CIN
WHERE t2.DIN='00016902'  
ORDER BY SUBSTRING(t1.CIN,9,4) DESC;

当单独运行以下代码时,我得到预期的结果,即49。

SELECT COUNT(DISTINCT CIN) FROM `cSignatoryAssociations` WHERE DIN ='00016902'

请帮我弄清楚出了什么问题。

2 个答案:

答案 0 :(得分:1)

就像你说的那样

SELECT COUNT(DISTINCT CIN) FROM `cSignatoryAssociations` WHERE DIN ='00016902'

返回49行。但这是一个子选择,主选择也有一个区别。

带有Distinct的Main Select将删除相同的行,这将是这种情况。

整个选择将返回49行,但有2个相同的元组,而Distinct将删除一个。所以结果将是48行。

答案 1 :(得分:1)

试试:

SELECT t2.CIN, t1.Name, COUNT(t2.CIN)
FROM `cSignatoryAssociations` t2
LEFT JOIN `cRoC` t1 ON t1.CIN = t2.CIN
WHERE t2.DIN='00016902'  
GROUP BY t1.Name
ORDER BY SUBSTRING(t1.CIN,9,4) DESC;

有一件事我不知道你想要做什么但只是确保你想要LEFT JOININNER JOIN。因为他们没有给出相同的结果。