0
 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 条记录。

4

1 回答 1

2

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

但是作为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
于 2013-10-24T06:19:38.793 回答