SQL列出列A多次出现但具有不同列B值的所有行
例如,我有两列,我想列出A行中的项目在A列中多次出现,但在B列中有不同值的所有行。到目前为止,我还没有找到答案SQL列出列A多次出现但具有不同列B值的所有行,sql,ms-access,combinations,distinct-values,Sql,Ms Access,Combinations,Distinct Values,例如,我有两列,我想列出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
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;
SELECT ColumnA
FROM mytable
GROUP BY ColumnA
HAVING COUNT(*) > 1 AND COUNT(DISTINCT ColumnB) = COUNT(*)
另一种可能更有效的子句是:
HAVING MIN(ColumnB) <> MAX(ColumnB)
具有最小值(ColumnB)和最大值(ColumnB)
尝试此查询:
SELECT ColumnA
FROM table t
GROUP BY ColumnA
HAVING COUNT(DISTINCT ColumnB) >= 2;
SELECT ColumnA
FROM mytable
GROUP BY ColumnA
HAVING COUNT(*) > 1 AND COUNT(DISTINCT ColumnB) = COUNT(*)
- 如果
列a
值出现多次,则HAVING
子句中的第一个谓词为true
- 如果
列B
中的所有值在列a
组中是不同的,则第二个谓词为true
似乎很好用。下面是我正在处理并将此查询插入的SQL FIDLE:我正在使用ms access,我得到一个未定义的函数,在表达式错误中不同。我猜在access中它必须是一个嵌套查询,count和distinct不能在同一个select语句中。你知道吗。我尝试了一些,但无法过滤这些值,以仅显示列中具有不同值的值b@JimS . . . 你应该用你正在使用的数据库标记你的问题。MS Access是唯一不支持非常标准的COUNT(DISTINCT)
的软件。