sqlite> select sid,max(amount) from(select * from Am where year=2014);
1,600
sqlite> select sid from (select sid,max(amount) from(select * from Am where year=2014));
3
3来自哪里?!唯一的选择是1 .. 这是怎么回事? 感谢。
答案 0 :(得分:3)
select sid, max(amount)
似乎没有明确定义。我认为你假设它会给你最大数量的行的sid,我不认为这是一个有效的假设。
我会把它写成
select sid from Am where year = 2014
and amount = (select max(amount) from Am where year = 2014)
如果最大金额达到平局,则可以返回多行。
答案 1 :(得分:1)
现在你知道不确定意味着什么,如果你没有聚合你需要分组,其他数据库甚至不允许这个操作。 假设您有以下值:
sid amount
1 600
1 500
3 400
3 200
select sid,max(amount) from t
将从sid和600返回一个不确定的值,MAX.Sid可能是正确的,也可能不是,这就是不确定的意思,因为你对该列没有任何控制权。正确的查询将是
select sid,max(amount) from t where year = 2014 GROUP BY sid
或者
select max(amount) from t