有效或无效的GROUP BY查询

时间:2013-10-24 06:16:00

标签: mysql sql group-by

 SELECT S2.A
 FROM S1, S2
 WHERE S1.A = S2.A
 GROUP BY S1.A
 HAVING COUNT(*) > 1;

这是一个有效的查询吗?

因为根据我的理解,你的select子句中的任何内容都必须在你的group by子句中,但是这个查询不遵循它。

然而,通过查看此查询,我确实有意义,因为您正在从S2中选择A属性值,使得S1.A = S2.A,其中S1的特定A值的数量大于1记录。

1 个答案:

答案 0 :(得分:2)

好吧,当您使用聚合IN MYSQL时,您不需要在group by中的select子句中聚合任何未聚合的内容(因此您的假设是ANSI正确的,但不是真的适用于mysql)。 / p>

但是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