其他列的SQL- SELECT最小值

时间:2014-04-25 19:55:10

标签: sql oracle min

让我们有一个名为employers的表格,其中包含列:

id
cash

我需要选择idcash给那些现金低于最低现金的雇主id = 2

表格的一个例子:

----------
id    cash
----------
1      100
2      200
2      150
2      125
3      320
4      400

它应该只选择第一行,因为id 2行中的最小现金是125,只有这一行的现金较少。

我尝试了类似的东西,但它不起作用:

SELECT id, MIN(cash)
FROM employers
WHERE cash < (MIN(cash) 
WHERE id = 2;

2 个答案:

答案 0 :(得分:1)

尝试以下查询

SELECT id, cash
FROM employers
WHERE cash < (SELECT MIN(cash) 
              FROM employers
              WHERE id = 2 
              GROUP BY id);

编辑:从查询中删除了MIN,这应该适用于您的数据样本。
另外,我建议您根据自己的要求修改查询 如果您的每个employer只有现金最少,现金少于现金,那么请使用GROUP BY id并选择MIN(cash)

答案 1 :(得分:0)

SELECT T1.ID, min(T1.cash), T2.Id, min(T2.Cash)
FROM Table T1
CROSS JOIN table T2
WHERE T1.CASH < T2.CASH
and T2.ID = 2
and T1.ID <> 2
GROUP BY T1.ID, T2.ID