Mysql返回记录有错误 - agregation函数MAX()

时间:2018-05-21 15:55:55

标签: mysql linux

mysql Ver 14.14使用readline 6.3为debian-linux-gnu(x86_64)分发5.5.60

我有一张桌子" mytable"有12500条记录和这个字段

  • mytable_id(PRI,auto_increment)
  • X_ID(整数)
  • y_id(整数)
  • fieldX(VARCHAR)
  • fieldY(VARCHAR)。

执行咨询时:

select max(x_id), y_id, fieldX, fieldY 
from mytable;

并返回例如

x_id  | y_id | fieldX | fieldY
12121 | 111  | textX  | testY

但执行时:

select  y_id, fieldX, fieldY 
from mytable 
where x_id = 12121;

返回

y_id | fieldX | fieldY
232  | textX  | textY

y_id不匹配。

为什么?

2 个答案:

答案 0 :(得分:1)

使用没有group by的聚合函数会对不参与聚合函数的列产生不可预测的结果,并且在组中没有提到..

您可以使用或汇总功能或按

排序
  select max(x_id), max(y_id), max(fieldX), max(fieldY) 
  from mytable;

  select max(x_id), y_id, fieldX, fieldY 
  from mytable
  group by y_id, fieldX, fieldY ;

答案 1 :(得分:1)

如果你想要最后一行,你应该做

 SELECT *
 FROM mytable
 ORDER BY x_id DESC
 LIMIT 1

您的查询的问题是您从字段中选择MAX值,但另一个是随机值,并且不必与最大值所在的行相关。