3

我想显示在列中多次出现相同值的记录,但前提是相应列与原始列具有不同的值。

例如:

Name    ID
NORTH   5762
NORTH   5762
EAST    7457
WEST    1234
WEST    1234
WEST    5678

我只需要查看 WEST,因为 EAST 只有 1 次出现,虽然 NORTH 出现多次,但它们都共享相同的 ID 值。

4

2 回答 2

2
SELECT  a.*
FROM    tableName a
WHERE   EXISTS
        (
            SELECT  1
            FROM    TableName b
            WHERE   a.Name = b.name
            GROUP   BY NAME
            HAVING  COUNT(DISTINCT ID) > 1 AND
                    COUNT(*) > 1
        )

输出

╔══════╦══════╗
║ NAME ║  ID  ║
╠══════╬══════╣
║ WEST ║ 1234 ║
║ WEST ║ 1234 ║
║ WEST ║ 5678 ║
╚══════╩══════╝

或者如果您不想查看所有记录,

SELECT  Name
FROM    TableName 
GROUP   BY NAME
HAVING  COUNT(DISTINCT ID) > 1 AND COUNT(*) > 1

输出

╔══════╗
║ NAME ║
╠══════╣
║ WEST ║
╚══════╝
于 2013-05-29T02:43:41.803 回答
0

因此,您想按名称和 id 进行分组,并且只有 1 个结果——您可以这样做:

SELECT Name
FROM Table
WHERE Name IN
 (
    SELECT Name
    FROM Table
    GROUP BY Name, ID
    HAVING COUNT(*) = 1
 ) 
GROUP BY NAME
HAVING COUNT(NAME) > 1

这是小提琴:http ://www.sqlfiddle.com/#!3/d7d16/1

于 2013-05-29T02:45:02.587 回答