2017-06-06 49 views

回答

2

試試下面

SELECT * FROM LIST 
WHERE LISTID IN (select LISTID FROM LIST WHERE LISTCONFIG IN 'TypeT','TypeS')) 

或者你可以使用下面的只有SQL服務器2016

DECLARE @PaymentType VARCHAR(20) 
SELECT @PaymentType= isnull(@PaymentType+',','')+LISTID FROM list WHERE LISTID IN ('TypeT','TypeS') 
SELECT * FROM LIST WHERE LISTID IN (select value from STRING_SPLIT(@PaymentType, ',') ) 
+0

嗨,對不起,我希望類型被存儲在變量..所以我可以使用該變量用於其他目的。 – user3835327

+0

我們只能使用一個變量,或者必須使用分隔符分隔存儲它們,然後根據分隔符或動態sql分割它們。 – Azar

+0

感謝您的回覆..我找到了解決方案! – user3835327

1

嘗試:

SELECT * 
FROM LIST 
WHERE 
    LISTID IN (SELECT LISTID FROM LIST WHERE LISTCONFIG IN ('TypeT','TypeS')) 

不過,我認爲這仍然過於複雜。您是否嘗試過:

SELECT * 
FROM LIST WHERE LISTCONFIG IN ('TypeT','TypeS') 
+0

感謝您的回覆..我找到了解決方案! – user3835327

1

如果你想使用IN做到這一點,你必須使用動態SQL來做到這一點。這也意味着創建逗號分隔的字符串。這是可行的,但更簡單的方法是:

DECLARE @PaymentType TABLE (ListID INT) ; 

INSERT @PaymentType (ListID) 
SELECT LISTID FROM LIST WHERE LISTCONFIG IN ('TypeT','TypeS') 

SELECT LST.* 
FROM LIST Lst 
JOIN @PaymentType AS PT 
    ON PT.ListID = Lst.ListID 
+0

感謝您的回覆..我找到了解決方案! – user3835327

1

另一種溶劑是使用動態字符串。如果你的SQL版本低於2016年

DECLARE @PaymentType VARCHAR(20) 
SELECT @PaymentType= isnull(@PaymentType+',','')+LISTID FROM list WHERE LISTID IN ('TypeT','TypeS') 
exec('SELECT * FROM LIST WHERE LISTID IN ('[email protected]+')') 
+0

感謝您的回覆..我找到了解決方案! – user3835327