Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
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 条记录。
group by好吧,当您在 MYSQL 中使用聚合时,您不需要在 select 子句中聚合任何未聚合的内容(因此您的假设在 ANSI 上是正确的,但对于 mysql 不是真的)。
group by
但是作为S1.A = S2.A,你为什么不选择S1.A呢?
S1.A = S2.A
S1.A
顺便说一句,你应该使用JOIN,我会这样写查询:
JOIN
SELECT S1.A FROM S1 INNER JOIN S2 on S1.A = S2.A GROUP BY S1.A HAVING COUNT(*) > 1