我有一个表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& #它没有。如何编写完成所有操作的查询。
谢谢!
答案 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)