PostgreSQL合并两列去重值并获取合并后去重结果
实现两列去重值合并后再去重的SQL方案
要将ba和ca两列的去重值合并后再次去重,你可以利用PostgreSQL的UNION操作符——它会自动对合并后的结果集去重,完全匹配你的需求。
方法1:先单独去重再合并(高效简洁)
SELECT DISTINCT ba AS value FROM test_table UNION SELECT DISTINCT ca AS value FROM test_table;
这条语句的逻辑很直接:
- 第一部分查询提取
ba列的所有唯一值 - 第二部分查询提取
ca列的所有唯一值 UNION会自动合并这两个结果集,并去除重复的数值,最终得到包含5、10、11、18、20的结果。
方法2:先合并所有值再整体去重
如果需要先把两列的所有值(包含重复项)合并,再统一去重,可以用UNION ALL配合外层的DISTINCT:
SELECT DISTINCT value FROM ( SELECT ba AS value FROM test_table UNION ALL SELECT ca AS value FROM test_table ) AS combined_data;
UNION ALL只会单纯合并两个结果集(不做去重或排序),外层的DISTINCT则对合并后的所有数值进行去重,最终效果和方法1一致。不过当原表中两列重复数据较多时,方法1的效率会更高,因为它提前减少了需要合并的数据量。
内容的提问来源于stack exchange,提问作者Souvik Ray
相关产品推荐
相关产品推荐

