T-Sql
如何使用一個查詢選擇多行
是否可以在 SQL Server 中使用一個查詢來選擇多行?例如,我必須執行兩個查詢才能獲得如下結果。如何使用一個查詢獲得結果?
SELECT col1, col2 WHERE order_number = 'unique_value1' SELECT col1, col2 WHERE order_number = 'unique_value2'
第一個查詢是最快的,在 order_number 上有一個索引
CREATE TABLE mytable (col1 int, col2 int, order_number varCHAR(50)) GO
SELECT col1, col2 frOM mytable WHERE order_number = 'unique_value1' UNION SELECT col1, col2 frOM mytable WHERE order_number = 'unique_value2'
GO
col1 | col2 ---: | ---:
SELECT col1, col2 frOM mytable WHERE order_number = 'unique_value1' OR order_number = 'unique_value2' GO
col1 | col2 ---: | ---:
SELECT col1, col2 frOM mytable WHERE order_number IN ( 'unique_value1' ,'unique_value2') GO
col1 | col2 ---: | ---:
db<>在這裡擺弄
nbk 解決方案的替代方法是使用如下
UNION ALL
子句:SELECT col1, col2 WHERE order_number = 'unique_value1' UNION ALL SELECT col1, col2 WHERE order_number = 'unique_value2'
如果您確實為該
order_number
欄位添加了索引,則可以測試在您的情況下哪個查詢更快(使用OR
子句或UNION ALL
子句),它僅取決於數據和系統。