仅使用SELECT DISTINCT或类似内容获取多个记录

时间:2014-07-16 04:06:37

标签: sql select distinct multiple-records

我有这样的记录:

Column1 Column2
A       Blue
A       Blue
B       Red
B       Green
C       Blue
C       Red

使用SELECT DISTINCT我明白了:

Column1 Column2
A       Blue
B       Red
B       Green
C       Blue
C       Red

我想得到什么:

Column1 Column2
B       Red
B       Green
C       Blue
C       Red

所以我只需要获得column1的多个记录,这些记录在column2上具有不同的值。 (我加入了两张桌子)

使用SELECT DISTINCT,我更接近我需要的东西,但我找不到一种方法来排除第1列上的“A”之类的记录,这些记录在第2列上始终具有相同的值...

5 个答案:

答案 0 :(得分:0)

试试这个:

SELECT * FROM yourtable
WHERE Column1 IN
(SELECT Column1
 FROM yourtable
 GROUP BY Column1
 HAVING COUNT(DISTINCT Column2) > 1
)

DISTINCT中的COUNT可确保您只获得Column2具有多个不同值的记录。

答案 1 :(得分:0)

我认为此代码适用于大多数系统:

SELECT Col1,Col2
FROM tbl
GROUP BY Col1,Col2
HAVING COUNT(*)<=1

查看结果:http://sqlfiddle.com/#!6/47285/8/0

答案 2 :(得分:0)

假设您正在使用MS SQL Server ....那不是DISTINCT的工作方式,DISTINCT将应用于SELECT语句中的整个列列表,这就是您的原因得到你提到的输出。尝试使用GROUP BYHAVING的组合,如下所示......

SELECT Column1, Column2 FROM [table_name] 
GROUP BY Column1, Column2 
HAVING COUNT(*) < 2 
ORDER BY Column1

答案 3 :(得分:0)

尝试以下查询:

SELECT Col1,Col2
FROM tbl
GROUP BY Col1,Col2
HAVING COUNT(Col1)<=1

答案 4 :(得分:0)

你可以这样使用

select a.Column1 ,count(a.Column1 )
from 
   (select Distinct Column1 ,Column2 
    from Items) a
group by a.Column1 
having Count(a.Column1 ) > 1