这是我的表...
+----+--------+
| id | amount |
+----+--------+
| 1 | 100 |
| 1 | 50 |
| 1 | 0 |
| 2 | 500 |
| 2 | 100 |
| 3 | 300 |
| 3 | -2 |
| 4 | 400 |
| 4 | 200 |
+----+--------+
我想从中选择 not 的id
的每个值都具有与之关联的非正(即负或0
)值,以及最小{与amount
相关联的{1}}。
如果我使用此代码......
id
......然后这些结果显示......
SELECT DISTINCT id, amount
FROM table t
WHERE amount = (SELECT MIN(amount) FROM table WHERE id= t.id)
但是我想要的声明是......
+----+--------+
| id | amount |
+----+--------+
| 1 | 0 |
| 2 | 100 |
| 3 | -2 |
| 4 | 200 |
+----+--------+
答案 0 :(得分:0)
如果您想显示ID,@Bean
public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() {
return new Jackson2ObjectMapperBuilderCustomizer() {
@Override
public void customize(Jackson2ObjectMapperBuilder builder) {
builder.dateFormat(new ISO8601DateFormat());
}
};
}
> min(amount)
,使用它。
0
答案 1 :(得分:0)
只需在查询中添加amount>0
即可。你错过了查询中的那个条件。应该这样做。
SELECT DISTINCT id, amount FROM table t
WHERE amount = (SELECT MIN(amount) FROM table WHERE id= t.id)
and amount>0;
答案 2 :(得分:0)
请尝试以下方法......
SELECT id,
MIN( amount )
FROM table
WHERE amount > 0
GROUP BY id
ORDER BY id;
此声明首先选择WHERE
amount
大于0
的所有记录。
然后,根据id
的每个幸存值对结果数据集中的记录进行分组,并为amount
/ GROUP
选择id
的最小值。
然后,生成的值对按ORDER id
排序并返回给用户。
如果您有任何问题或意见,请随时发表评论。