簡體   English   中英

SQL Server:從tableA或tableB OR Both中選擇

[英]SQL Server : select from tableA OR tableB OR Both

有沒有辦法從SQL Server中的table Atable 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM