首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL 多欄位字串串聯與唯一值查詢技巧:|| 運算子搭配 DISTINCT 實戰

     編輯:關於SqlServer

情境

資料表 TABLE_A 擁有欄位 KEY_1、KEY_2,需查詢所有唯一的組合 (去除重複)。

解決方案

SELECT DISTINCT (KEY_1 || KEY_2) FROM TABLE_A;

語法解析

  • ||:SQL 標準字串串聯運算子 (Oracle、PostgreSQL、DB2、SQLite 支援)。
    SQL Server 請改用 +:SELECT DISTINCT (KEY_1 + KEY_2) FROM TABLE_A;
    MySQL/MariaDB 請用 CONCAT():SELECT DISTINCT CONCAT(KEY_1, KEY_2) FROM TABLE_A;
  • DISTINCT:移除結果集中重複的串聯值,保留唯一組合。
  • 括號 () 非必要但建議加上,提升可讀性與運算優先序明確性。

進階變體

加入分隔符提升可讀性

-- Oracle/PostgreSQL
SELECT DISTINCT (KEY_1 || '|' || KEY_2) FROM TABLE_A;

-- SQL Server
SELECT DISTINCT (KEY_1 + '|' + KEY_2) FROM TABLE_A;

同時保留原始欄位供參考

SELECT DISTINCT KEY_1, KEY_2, (KEY_1 || KEY_2) AS combined_key FROM TABLE_A;

統計唯一組合數量

SELECT COUNT(DISTINCT (KEY_1 || KEY_2)) AS unique_combinations FROM TABLE_A;

效能建議

  • 若 KEY_1, KEY_2 常用於此類查詢,建立複合索引 CREATE INDEX idx_key1_key2 ON TABLE_A (KEY_1, KEY_2) 可大幅加速 DISTINCT 掃描。
  • 大資料量考慮物化視圖或定期重整的摘要表。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved