让我们有一个名为employers
的表格,其中包含列:
id
cash
我需要选择id
和cash
给那些现金低于最低现金的雇主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;
答案 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