我有一個表ID,祿,代碼,價值如何搜索未定義值的行?
ID | Loc | Code | Value
1 | USA | 1 | A
2 | NUS | 2 | B
3 | NA | 1 | C
4 | NA | 2 | D
如果我通過在LOC-USA,它應該返回我1(它),如果通過在LOC-NUS,應該還給我2(它確實),如果我通過任何其他值(例如,AUS,LON),它應該返回我#&#它沒有。我該如何編寫一個全能的查詢。
謝謝!
我有一個表ID,祿,代碼,價值如何搜索未定義值的行?
ID | Loc | Code | Value
1 | USA | 1 | A
2 | NUS | 2 | B
3 | NA | 1 | C
4 | NA | 2 | D
如果我通過在LOC-USA,它應該返回我1(它),如果通過在LOC-NUS,應該還給我2(它確實),如果我通過任何其他值(例如,AUS,LON),它應該返回我#&#它沒有。我該如何編寫一個全能的查詢。
謝謝!
我認爲你可以在你CASE
在這裏像這樣類似的方式:
SELECT DISTINCT (
CASE WHEN Loc = 'USA' THEN ID
WHEN Loc = 'NUS' THEN ID
ELSE (
SELECT GROUP_CONCAT(ID SEPARATOR ' & ')
FROM test
WHERE Loc != 'USA' AND Loc != 'NUS'
)
END
) AS result
FROM test
WHERE Loc = 'NA';
結果(SQL Fiddle)
3 & 4 & 7
編輯:
不同的ID值
SELECT DISTINCT (
CASE WHEN Loc = 'USA' THEN ID
WHEN Loc = 'NUS' THEN ID
ELSE (
SELECT ID
)
END
) AS result
FROM test
WHERE Loc = 'NA';
結果(SQL Fiddle)
這不會基於位置返回行。我希望它需要一個位置(例如美國或澳大利亞,並返回相應的行。(http://sqlfiddle.com/#!9/13fc5/4/0) –
好的,編輯爲基於位置返回行。 –
任何機會,我可以得到的行返回,而不是一個連接的單個值 –
爲什麼要這樣做? – Strawberry
您需要顯示代碼。我假設'3&#'你的意思是'3和4'? –
如果你搜索'WHERE Loc ='NA'',你應該得到3和4. –