T-Sql

如何使用一個查詢選擇多行

  • March 24, 2021

是否可以在 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子句),它僅取決於數據和系統。

引用自:https://dba.stackexchange.com/questions/287638