SQL 列出 A 列多次出现但 B 列值不同的所有行
SQL list all rows where column A appears more than once but have distinct Column B values
例如,我有两列,我想列出 ROW A 中的项目在 A 列中多次出现,但在 B 列中具有不同值的所有行。到目前为止,我还没有找到答案
Column A Column B
Apple x
Banana a
Orange b
Orange b
Banana x
Avocado d
试试这个查询:
SELECT ColumnA
FROM table t
GROUP BY ColumnA
HAVING COUNT(DISTINCT ColumnB) >= 2;
另一个可能更有效的 HAVING
子句是:
HAVING MIN(ColumnB) <> MAX(ColumnB)
试试这个查询:
SELECT ColumnA
FROM mytable
GROUP BY ColumnA
HAVING COUNT(*) > 1 AND COUNT(DISTINCT ColumnB) = COUNT(*)
- 如果
ColumnA
值出现不止一次,则 HAVING
子句中的第一个谓词为真。
- 如果 所有 值在
ColumnB
中在 ColumnA
组中不同,则第二个谓词为真。
例如,我有两列,我想列出 ROW A 中的项目在 A 列中多次出现,但在 B 列中具有不同值的所有行。到目前为止,我还没有找到答案
Column A Column B
Apple x
Banana a
Orange b
Orange b
Banana x
Avocado d
试试这个查询:
SELECT ColumnA
FROM table t
GROUP BY ColumnA
HAVING COUNT(DISTINCT ColumnB) >= 2;
另一个可能更有效的 HAVING
子句是:
HAVING MIN(ColumnB) <> MAX(ColumnB)
试试这个查询:
SELECT ColumnA
FROM mytable
GROUP BY ColumnA
HAVING COUNT(*) > 1 AND COUNT(DISTINCT ColumnB) = COUNT(*)
- 如果
ColumnA
值出现不止一次,则HAVING
子句中的第一个谓词为真。 - 如果 所有 值在
ColumnB
中在ColumnA
组中不同,则第二个谓词为真。