我想显示在列中多次出现相同值的记录,但前提是相应列与原始列具有不同的值。
例如:
Name ID
NORTH 5762
NORTH 5762
EAST 7457
WEST 1234
WEST 1234
WEST 5678
我只需要查看 WEST,因为 EAST 只有 1 次出现,虽然 NORTH 出现多次,但它们都共享相同的 ID 值。
我想显示在列中多次出现相同值的记录,但前提是相应列与原始列具有不同的值。
例如:
Name ID
NORTH 5762
NORTH 5762
EAST 7457
WEST 1234
WEST 1234
WEST 5678
我只需要查看 WEST,因为 EAST 只有 1 次出现,虽然 NORTH 出现多次,但它们都共享相同的 ID 值。
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 ║
╚══════╝
因此,您想按名称和 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