我想知道这两个状态之间的区别。
分组声明:
SELECT
a,
max(b)
from table
group by a;
子查询声明:
SELECT
a,
b
from table as t1
where b=(SELECT MAX(b) from table as t2 where t1.a=t2.a);
这两个陈述的目标是显示单a
值max(b)
。
答案 0 :(得分:0)
无论行如何,第一种方法都会为您提供b
的最大值。就像你有3列a
,b
和c
并使用第一种方法a
将是分组标准,对于b
,您将得到最大值但是怎么样c
你会得到它的价值取决于mysql,它不会给你b
的值最大的行
a b c
1 3 2
1 2 4
1 1 6
使用第二种方法时,它会为您提供b
的值最大的行,考虑到上面的数据集,您将得到1,3,2。
换句话说,第一个会给每个b
组a
的最大值,第二个方法会给每个a
组的最大行
答案 1 :(得分:0)
max()
中的返回每组中b的最大值。
在第二部分中,您只需搜索max b并获取相应的行
答案 2 :(得分:0)