2016-09-08 5 views
0

たとえば、クエリで2つの列間でmax属性を選択したいとします。テーブル全体が最大ではありません。そのような値の間の最大値の選択PostgreSQL

何か:

SELECT MAX(t1.c1, t2.c2) 
FROM Table1 as t1, Table2 as t2 
WHERE t1.id = t2.t1_id 
AND ...... here goes more conditions. 

私はそれぞれの行にしたいが可能ということですt1.c1t2.c2

間の最大を表す値をマッピングしていますか?

+0

サンプルデータと期待される結果が参考になります...代わりに 'join'を使用してみてください。 – sgeddes

+0

私はあなたが単に 'SELECT GREATEST(t1.c1、t2.c2)... 'を望んでいると思います。 –

答えて

1

使用union all

select max(c1) 
from (select c1 from t1 union all select c2 from t2) t; 

か - おそらくより効率的 - greatest()を使用します。

select greatest(c1, c2) 
from (select max(c1) as c1 from t1) t1 cross join 
    (select max(c2) as c2 from t2) t2; 
+0

どこに条件を追加しますか?私の答えのように。私はそれを更新しました。 – levi

+0

サブクエリに追加します。 –

4

使用greatest()

SELECT greatest(t1.c1, t2.c2) 
FROM Table1 as t1 
JOIN Table2 as t2 ON t1.id = t2.t1_id 
-- WHERE ...... here goes more conditions 

注、私はあなたの表記を変更しましたより便利に参加する。

関連する問題