[英]SQL Server : select from tableA OR tableB OR Both
有沒有辦法從SQL Server中的table A
, table B
或兩個表中進行選擇? 盡可能多,我不想使用動態SQL。 我在一個類似的問題中看過這個,但它只在1個桌子上選擇。
Declare @table = 1
SELECT *
FROM Table1
WHERE <stuff>
AND @Table = 1
UNION ALL
SELECT *
FROM Table2
WHERE <stuff>
AND @Table = 2
你可以試試這個:
你有兩個關於價值@table的解決方案。
您可以考慮@table = NULL關於兩個表的選擇,或者您可以考慮@table = value(例如3作為1和2的總和),因此您的查詢變為:
如果選擇@table = NULL:
Declare @table = NULL
SELECT *
FROM Table1
WHERE <stuff>
AND (@Table = 1 OR @table IS NULL)
UNION ALL
SELECT *
FROM Table2
WHERE <stuff>
AND (@Table = 2 OR @table IS NULL)
如果選擇@Table = value(例如3)
Declare @table = 3
SELECT *
FROM Table1
WHERE <stuff>
AND (@Table = 1 OR @table = 3)
UNION ALL
SELECT *
FROM Table2
WHERE <stuff>
AND (@Table = 2 OR @table = 3)
您可以使用IF ... ELSE語句來實現此目的,如下所示。 我假設你想使用@table來控制腳本應該做什么。
Declare @table = 1
IF @table = 1
BEGIN
SELECT *
FROM Table1
WHERE <stuff>
END
ELSE IF @table = 2
BEGIN
SELECT *
FROM Table2
WHERE <stuff>
END
ELSE IF @table = 3 /* OR @table IN (1,2) --depends on how you want to handle this*/
BEGIN
SELECT *
FROM Table1
WHERE <stuff>
UNION ALL
SELECT *
FROM Table2
WHERE <stuff>
END
一旦條件滿足,腳本將立即停止。 例如,IF @Table = 2,只運行以下腳本部分:
ELSE IF @table = 2
BEGIN
SELECT *
FROM Table2
WHERE <stuff>
END
希望這可以幫助:
SELECT maker, Product.model AS model_1, PC.model AS model_2, price
FROM Product INNER JOIN PC ON PC.model = Product.model
ORDER BY maker, PC.model;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.