2015-11-02 39 views
-2

我有一個表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),它應該返回我#&#它沒有。我該如何編寫一個全能的查詢。

謝謝!

+0

爲什麼要這樣做? – Strawberry

+0

您需要顯示代碼。我假設'3&#'你的意思是'3和4'? –

+0

如果你搜索'WHERE Loc ='NA'',你應該得到3和4. –

回答

0

我認爲你可以在你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

+0

這不會基於位置返回行。我希望它需要一個位置(例如美國或澳大利亞,並返回相應的行。(http://sqlfiddle.com/#!9/13fc5/4/0) –

+0

好的,編輯爲基於位置返回行。 –

+0

任何機會,我可以得到的行返回,而不是一個連接的單個值 –