我想從子查詢中選擇多個列。在這裏我的小例子:具有2個返回值的SELECT子查詢
一個功能返回兩個值:
CREATE OR REPLACE FUNCTION dummy_function(my_text text)
RETURNS TABLE (id Integer, remark text) AS $$
BEGIN
RETURN QUERY SELECT 42, upper(my_text);
END;
$$ LANGUAGE plpgsql;
我不工作查詢:
SELECT
id,
city_name,
dummy_function(city_name)
FROM
(SELECT 1 as id, 'Paris' as city_name
UNION ALL
SELECT 2 as id, 'Barcelona' as city_name
) AS dummy_table
我錯誤的結果:
id | city_name | dummy_function
----+-----------+----------------
1 | Paris | (42,PARIS)
2 | Barcelona | (42,BARCELONA)
但我想有這樣結果:
id | city_name | number | new_text
----+-----------+---------------------
1 | Paris | 42 | PARIS
2 | Barcelona | 42 | BARCELONA
你知道如何不運行函數兩次實現這一目標?
它的工作原理:-) 但在下面的答案中,我得到了相同的結果,但沒有使用'LATERAL'。 爲什麼在這種情況下我應該使用'LATERAL'? –
查看已答覆的答案。 – klin