2017-08-02 32 views
-2

多行我有一個表的表(ID,姓名),但讓剛剛與ID在這裏工作如何選擇特定的行如果X,如果Y

id 
-- 
A 
B 
C 
D 
all 

我想是選擇所有行(A ,B,C D ...),如果輸入是全部,除了「全部」,否則只有特定的值(例如:如果輸入是A,則爲A)。

你們有這個美味多汁的解決方案嗎?謝謝!

+1

您是否在尋找'選擇* frmo表1其中id = @x或@x是null'? –

+1

你有什麼錯誤?這是非常基本的SQL。 –

+0

我沒有遇到錯誤,我只需要一點幫助就可以得到完整的解決方案(這是我正在處理的問題的一部分):) – HPeter

回答

3

比方說,您的查詢中有一個參數@Id。然後你可以根據@Id的價值制定你的WHERE條款:

SELECT * 
FROM MyTable t 
WHERE i.Id <> 'all' AND (@Id='all' OR @Id=t.Id) 

i.Id <> 'all'部分確保'all'行再也沒有回來,不管@Id的設置。其餘部分是將您的條件轉換爲SQL(即,查詢有'all',或查詢匹配單個Id)。

+0

您也有一個很好的解決方案。另一個人速度更快,這就是爲什麼我將他標記爲答案。不過謝謝你。 – HPeter

+0

哦,你是對的,對不起:) – HPeter

1

這看起來像一個關係表的錯誤使用的「ID」列應該只包含IDS ...

我建議刪除「所有」行,而是寫一個存儲過程,以決定是否選擇所有的行或只有一個。

無論如何,你比如:

SELECT * FROM your_table WHERE (id = @ID OR @ID = 'all') AND id <> 'all' 
+0

感謝隊友,這正是我一直在尋找的。歡迎您使用 – HPeter

+0

,您可以將答案標記爲已接受;) – ggradnig

相關問題