SQL 唯一值一列但返回整行

问题描述 投票:0回答:1

在 SQLite Browser v3.12.2(使用 SQLite v3.35.5)中,我可以使用下面的 SQL 代码返回那些仅在一列中具有唯一值的记录

ColHead
:

SELECT 
    ColHead, COUNT(*) AS ColHead_COUNT 
FROM
    DatabaseName
GROUP BY
    ColHead
HAVING
    COUNT(*) = 1

这成功返回了那些唯一值行。但是,它只返回一列

ColHead

我需要仅在一列中查找唯一值,但结果集必须包含每条记录的所有列。

sql sqlite
1个回答
1
投票

解决此问题的最简单方法可能是使用

NOT EXISTS
,您可以在其中选择 不存在具有相同列头的另一行。

在 SQLite 中,每一行都有一个名为

ROWID
的唯一 ID,您可以使用它来查看是否查看同一行或另一行。

SELECT *
FROM mytable my_row
WHERE NOT EXISTS
(
  SELECT 'another row with the same colhead'
  FROM mytable other_row
  WHERE other_row.colhead = my_row.colhead
  AND other_row.rowid <> my_row.rowid
);

另一个选项是稍微修改查询以获取单行“组”的 ROWID(使用

MIN(rowid)
MAX(rowid)
),并使用它们来选择带有
IN
子句的完整行:

SELECT *
FROM mytable
WHERE rowid IN
(
  SELECT MIN(rowid)
  FROM mytable
  GROUP BY colhead
  HAVING COUNT(*) = 1
);
© www.soinside.com 2019 - 2024. All rights reserved.