是否可以进行以下
的查询从表中选择a,b或c,d,其中source = 2或target = 2;
我想选择a,b如果source = 2或c,则d,如果target = 2。
这可以用SQL语句吗?
答案 0 :(得分:4)
我假设你有一个名为'database'的表(一个表的可怕名称),它看起来像这样:
a | b | c | d | source | target
------+------+------+------+--------+--------
11 | 22 | 33 | 44 | 1 | 2
111 | 222 | 333 | 444 | 2 | 2
1111 | 2222 | 3333 | 4444 | 2 | 1
然后您可以这样查询:
select
case when source=2 then a else null end as a,
case when source=2 then b else null end as b,
case when target=2 then c else null end as c,
case when target=2 then d else null end as d
from database;
得到这个结果:
a | b | c | d
------+------+------+------
| | 33 | 44
111 | 222 | 333 | 444
1111 | 2222 | |
根据需要,只返回a和b,其中source = 2,并返回c和c,其中target = 2。
答案 1 :(得分:3)
你可以:
http://www.postgresql.org/docs/7.4/static/functions-conditional.html
这样的语句可以做你想要的,虽然我没有postgresql来测试:
SELECT CASE
WHEN source = 2 THEN a, b
WHEN target = 2 THEN c, d
ELSE 0
END
答案 2 :(得分:2)
select a,b
from database
where source = 2
union
select c,d
from database
where target = 2
对于工作示例检查Here
答案 3 :(得分:1)
这个怎么样:
select a,b,c,d from (select a,b from database where source=2 UNION select c,d from database where target=2)