我有这样的记录:
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列上始终具有相同的值...
答案 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
答案 2 :(得分:0)
假设您正在使用MS SQL Server ....那不是DISTINCT
的工作方式,DISTINCT
将应用于SELECT
语句中的整个列列表,这就是您的原因得到你提到的输出。尝试使用GROUP BY
和HAVING
的组合,如下所示......
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