如何在UNION查询中保留数据源标识字段?
给UNION查询添加数据源标识的解决方案
很简单,你只需要在每个SELECT语句里手动添加一个自定义标识字段,用来标记该行数据来自哪个schema就可以了。具体写法如下:
SELECT *, 'schema1' AS source_schema FROM "schema1"."items" UNION SELECT *, 'schema2' AS source_schema FROM "schema2"."items";
补充说明:
- 这里的
source_schema是自定义的字段名,你也可以改成更直观的名字,比如data_source或者origin_schema,完全看你的需求。 - 如果两张表的数据没有重复(或者你不需要自动去重),建议用
UNION ALL代替UNION,这样查询效率会更高——因为UNION会额外做一次去重操作:SELECT *, 'schema1' AS source_schema FROM "schema1"."items" UNION ALL SELECT *, 'schema2' AS source_schema FROM "schema2"."items"; - 如果你不想返回所有字段,而是指定某些字段,只需要把
*换成具体的字段名,同时保留标识字段即可,比如:SELECT id, name, 'schema1' AS source_schema FROM "schema1"."items" UNION ALL SELECT id, name, 'schema2' AS source_schema FROM "schema2"."items";
这样查询结果里就会多一列标识字段,每一行都能明确看到是来自schema1还是schema2啦。
内容的提问来源于stack exchange,提问作者Sergei Basharov
相关产品推荐
相关产品推荐

