Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL列出列A多次出现但具有不同列B值的所有行_Sql_Ms Access_Combinations_Distinct Values - Fatal编程技术网

SQL列出列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

例如,我有两列,我想列出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;
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)
的软件。