带有值的表:
Id Val1 Val2
1 111 1
2 101 2
3 3
4 120 1
5 121
它有这些限制:
Val2
只能有三个值(1,2,3)。
Val1
可以包含许多不同的值,包括null
,但不包括1,2或3。
我想选择不同的val1,val2值,但有以下例外:
如果Val1
为null
且Val2
不为1,则我将Val1
设为999
。
如果Val1
为null
且Val2
为1,则我将Val1
设置为999,不要选择Val2
。
如果Val1 is not
null , and
Val2 is 1, then I select
Val2`。
结果应该是(如果val1具有空值,并且val2具有1):
111
101
120
999 (null value set to 999)
121
2
3
结果应该是(如果val1没有' t空值,val2有1):
111
101
120
121
1
2
3
结果应该是(如果val1具有空值,而val2没有1):
111
101
999 (null value1 set to 999)
120
121
2
3
答案 0 :(得分:1)
使用Coalesce,它将检查该值是否为null并替换为其他内容:
http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_coalesce
要检查是否应使用val1或val2,请使用IF:
http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_if
例如,第一步是:
SELECT COALESCE(val1,999) from table1;
答案 1 :(得分:1)
这是你想要的吗?
select distinct coalesce(val, 999)
from ((select val1 as val from tablewithvalues) union all
(select val2 from tablewithvalues)
) twv;