WITH
一見単純なリクエストの含む節を実行しようとしています:
WITH sub AS (SELECT url FROM site WHERE id = 15)
SELECT * FROM search_result WHERE url = sub.url
しかし、うまくいきません。私は得る
エラー: テーブル "sub" の FROM 句のエントリがありません
どうしたの?
WITH
一見単純なリクエストの含む節を実行しようとしています:
WITH sub AS (SELECT url FROM site WHERE id = 15)
SELECT * FROM search_result WHERE url = sub.url
しかし、うまくいきません。私は得る
エラー: テーブル "sub" の FROM 句のエントリがありません
どうしたの?
テーブル式は、テーブルのように使用する必要があります。sub の値をスカラーとして使用しようとしています。
これを試してみてください (すみません、Postgres は私の最初の SQL 方言ではありません)。
WITH sub AS (SELECT url FROM site WHERE id = 15)
SELECT * FROM sub
INNER JOIN
search_result
ON
sub.url = search_result.url
EDIT、代わりに、WITH句をスキップして、次のようにすることもできます:-
SELECT * FROM
site
INNER JOIN
search_result
ON
site.url = search_result.url
WHERE
site.id = 15
これは CTE を使用する正しい方法ではありません。
With sub as (
SELECT url
FROM site
WHERE id = 15
)
SELECT *
FROM Search_Result SR
JOIN sub ON SR.url = sub.Url