2013-10-24 84 views
0
SELECT S2.A 
FROM S1, S2 
WHERE S1.A = S2.A 
GROUP BY S1.A 
HAVING COUNT(*) > 1; 

這是一個有效的查詢嗎?有效或無效GROUP BY查詢

因爲據我所知,無論你的select子句必須在你的group by子句中,但是這個查詢並不遵循它。

然而,通過查看這個查詢,對我來說確實有意義,因爲您從S2中選擇A屬性值,使得S1.A = S2.A,其中S1的特定A值的數目超過1條記錄。

+0

您需要組根據你選擇什麼,所以如果你選擇'S2.A'你可以」 t group by'S1.A' ... – alfasin

+0

@alfasin「壞東西」,但這在mysql中不是真的... –

+0

@RaphaëlAlthaus我的壞 - 我沒有注意到'mysql'標籤。順便說一句,它*是PLSQL的真實 – alfasin

回答

2

好吧,當你在MYSQL中使用聚合(因此你的假設是ANSI正確的,但不是真正的mysql),你不需要在group by的select子句中聚合任何東西。

但是作爲S1.A = S2.A,爲什麼不選擇S1.A

順便說一句,你應該使用JOIN,我會寫的查詢是這樣的:

SELECT S1.A 
FROM S1 
INNER JOIN S2 on S1.A = S2.A 
GROUP BY S1.A 
HAVING COUNT(*) > 1