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