Multipe表中一列中的SQL检查或唯一性

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

我在多个表中都有一个“唯一”列“ 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实现中工作。

sql unique qgis geopackage
1个回答
0
投票

您可以使用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
© www.soinside.com 2019 - 2024. All rights reserved.