0

我有一个“唯一”列,“GID_New”,它位于多个表中。有没有办法检查它是否在 SQL 中的 QGIS 项目中的所有表中都是唯一的?

是否可以在一个 SQL 搜索中完成而不将表合并为一个然后运行类似的东西

SELECT A.GID_New, count(*), A.TableName
FROM "Water_Merged" as A
Group by A.GID_New

然后检查计数 >1

我也想知道非唯一 GID_New 来自哪个表。

数据在 QGIS 的地理包中,因此代码需要在 QGIS SQL 实现中工作。

4

1 回答 1

1

您可以使用union all

select gid_new, count(*) no_matches
from (
    select gid_new from table1
    union all select gid_new from table2
    union all select gid_new from table3
) t
group by gid
having count(*) > 1

如果您想知道在哪个表中存在重复项,那么一种选择是字符串连接。假设您的数据库使用string_agg(),则如下所示:

select gid_new, count(*) no_matches, string_agg(which, ',') which_tables
from (
    select 'table1' which, gid_new from table1
    union all select 'table2', gid_new from table2
    union all select 'table3', gid_new from table3
) t
group by gid
having count(*) > 1
于 2020-06-01T01:44:15.950 回答