2016-05-03 6 views
1

私はこのようなクエリを持っています。私はサブクエリでCOL1を使用することはできませんサブクエリでcolumnの値を使用するには?

SELECT col1, 
     (SELECT another_col1 FROM table1 WHERE table1.date = col1) AS some_col 
FROM table1 
ORDER BY id; 

しかし、それは常に最後のレコードを返しますが、一致しません。

どうすればPostgreSQLで使用できますか?

+1

してください[編集]あなたの質問をし、いくつかのサンプルデータと予想される出力を追加します。 「*これは常に最後のレコードを返します」* –

答えて

2

テーブルの別名を付ける必要があります。比較している列が一意でない限り、オプティマイザは現在のレベルであるE.G. - 相関クエリで比較し、内部テーブルが外部テーブルと同じ列名を持つ場合、オプティマイザは、内部テーブルの列と比較することを意味すると考えます。

SELECT t.col1, 
     (SELECT s.another_col1 FROM Table1 s WHERE s.date = t.col1) as some_col 
FROM table1 t 
ORDER BY t.id 
+0

今後の読者にとって、テーブルエイリアスが非常に役立つ理由を明確にする必要があります。P。 –

+0

@JohnOdomあなたは正しいです:) – sagi

+0

Thx!できます!!) – mxgoncharov

0

使用この

SELECT (SELECT another_col1 FROM table1 WHERE table1.date = col1) as 
col1,(SELECT another_col1 FROM table1 WHERE table1.date = col1) AS 
some_col FROM (select col1 as col1 from table1) as col1 ORDER BY id; 
関連する問題