私は2つのテーブルを持っています
表1
c1t1 c2t1
1 saanu
3 abc
テーブル2
c1t2 c2t2
2 val2
4 val4
1 行のコマンドで c1t1 と c1t2 の最小値と最大値の c2t1 と c2t2 の値を見つける必要があります。
上記の例では、saanu と val4 を見つける必要があります
1 つのアプローチ:
select max(case c1 when min1 then c2 end) c2_first,
max(case c1 when max1 then c2 end) c2_last
from (select c1t1 c1, c2t1 c2 from table1
union all
select c1t2 c1, c2t2 c2 from table2) u
cross join
(select min(min11, min12) min1, max(max11, max12) max1 from
(select min(c1t1) min11, max(c1t1) max11 from table1) t1
cross join
(select min(c1t2) min12, max(c1t2) max12 from table2) t2) m
ここでSQLFiddle 。
私は非常によく似た問題を抱えていて、UNION ALLで解決しました。テーブル aTable1、...、aTableN の aColumn 列の最小値は、次のように計算できます。
SELECT Min(aColumn)
FROM (
SELECT aColumn FROM aTable1 UNION ALL
SELECT aColumn FROM aTable2 UNION ALL
...
SELECT aColumn FROM aTableN) t;
内部選択のそれぞれで Min を実行できるはずですが、その方法がわかりません!
1)
SELECT c2t1
FROM table1
ORDER BY c1t1 ASC LIMIT 1
2)
SELECT c2t2
FROM talbe2
ORDER BY c1t2 DESC LIMIT 1