如何搜索未定义值的行?

时间:2015-11-02 22:42:55

标签: mysql

我有一个表ID,Loc,Code,Value

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)它应该归还给我3& #它没有。如何编写完成所有操作的查询。

谢谢!

1 个答案:

答案 0 :(得分: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