如何在Postgres中使用CASE或IF语句从不同的表中进行选择?

时间:2018-11-25 12:57:52

标签: sql postgresql case

我想从许多表格之一中进行选择。该选择取决于某些条件。我该怎么做? 我想应该是这样的(但不起作用):

CASE x
    WHEN x=1 THEN
       select Id,Name from table1
    WHEN x=2 THEN
       select Id,Name from table2
    WHEN x=3 THEN
       select Id,Name from table3
END CASE;

2 个答案:

答案 0 :(得分:0)

一种方法:

SELECT id, name
FROM table1
WHERE x = 1
UNION ALL
SELECT id, name
FROM table2
WHERE x = 2
UNION ALL
SELECT id, name
FROM table3
WHERE x = 3

仅返回一个表的数据(如果x是这些值中的任何一个)。

答案 1 :(得分:0)

效率低下的解决方案可查询所有3个表,但会在代码中模仿switch语句(假设检索到的列相等)

declare @inputValue int = 1

SELECT * FROM (
    SELECT 1 [key], Id from table1
    UNION ALL
    SELECT 2, Id from table2
    UNION ALL
    SELECT 3, Id from table3
) x
where x.[key] = @inputValue