选择具有一列的所有列具有不同的值

时间:2012-06-06 19:07:29

标签: sql sql-server

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

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

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

4 个答案:

答案 0 :(得分:8)

假设您知道column3将始终不同,以获取具有多个值的行:

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

答案 1 :(得分:1)

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

SELECT col1, col2
FROM myTable
WHERE colWanted != knownValue

如果这不是您要找的,请在表格中列出数据示例和所需的输出。

答案 2 :(得分:1)

这样的东西
SELECT Col1, Col2
FROM Table
GROUP BY Col1, Col2
HAVING COUNT(*) = 1

这将为您提供具有唯一数据的Col1,Col2。

答案 3 :(得分:0)

假设col3有difs

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

或者显示所有3个COLS

SELECT Col1, Col2, Col3
FROM Table1
GROUP BY Col1, Col2, Col3
HAVING COUNT(Col3) > 1