2012-06-06 184 views
7

在我的表中,一些记录的所有列值都相同,除了一个。我需要写一个查询来获取这些记录。最好的办法是什么?表是这样的:选择所有具有一列的列具有不同的值

colA colB colC 
    a  b c 
    a  b d 
    a  b e 

什么是最好的方式来获取所有列的所有记录?感谢大家的帮助。

+0

是一个或多个不同的值不同,或者它必须只是一个值不同? – goat

+1

感谢您添加输入示例(表格)。仍然不清楚所需的输出。你能发表一个你想要输出结果的例子吗? – Oded

+0

它总是不同的列吗? –

回答

8

假设你知道,栏3将永远是不同的,以获得具有多个值的行:

SELECT Col1, Col2 
FROM Table t 
GROUP BY Col1, Col2 
HAVING COUNT(distinct col3) > 1 

如果您需要在三列所有的值,那么你可以加入此回原始表:

SELECT t.* 
FROM table t join 
    (SELECT Col1, Col2 
     FROM Table t 
     GROUP BY Col1, Col2 
     HAVING COUNT(distinct col3) > 1 
    ) cols 
    on t.col1 = cols.col1 and t.col2 = cols.col2 
+0

谢谢,它的作品! –

+0

'拥有COUNT(独特col3)> 1'完美! –

1

只需选择那些具有不同值的行:

SELECT col1, col2 
FROM myTable 
WHERE colWanted != knownValue 

如果这是你在找不什么,请在表中的数据和有用输出的例子。

+0

嗨Oded,谢谢你的帮助。其实我需要得到所有专栏。该表如下所示:colA colB colC –

1

如何像

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

这会给你Col1中,col2的具有唯一数据。

+0

感谢您的帮助,Leasure。但是,我需要具有或不具有唯一数据的所有列。 –

0

假设COL3有DIFS

SELECT Col1, Col2 
FROM Table 
GROUP BY Col1, Col2 
HAVING COUNT(*) > 1 

OR显示所有3 COLS

SELECT Col1, Col2, Col3 
FROM Table1 
GROUP BY Col1, Col2, Col3 
HAVING COUNT(Col3) > 1 
相关问题