サブクエリから複数の列を選択したいとします。ここに私の最小限の例:2つの値を返す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