0

我有两张桌子

表格1

c1t1    c2t1
1       saanu
3       abc

表2

c1t2    c2t2
2       val2
4       val4

我必须通过一行命令找出 c1t1 和 c1t2 的最小值和最大值的 c2t1 和 c2t2 的值。

对于上面的例子,我必须找到 saanu 和 val4

4

3 回答 3

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在这里

于 2013-11-09T21:20:28.417 回答
0

1)

SELECT c2t1
FROM table1
ORDER BY c1t1 ASC LIMIT 1

2)

SELECT c2t2
FROM talbe2
ORDER BY c1t2 DESC LIMIT 1
于 2013-11-09T20:59:14.537 回答
0

我有一个非常相似的问题,并用 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 ,但我还没有找到如何做到这一点!

于 2014-07-14T18:58:39.803 回答