在 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
。
我需要仅在一列中查找唯一值,但结果集必须包含每条记录的所有列。
解决此问题的最简单方法可能是使用
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
);