Html SQL语句提供了意外的结果
我有下表(mTable) SQL语句:Html SQL语句提供了意外的结果,html,mysql,distinct,Html,Mysql,Distinct,我有下表(mTable) SQL语句: SELECT DISTINCT `id`, number as mynum, MAX(`sent`) AS sentOn FROM `mTable` GROUP BY `id` 结果是: id | mynum | sentOn ------------------------------------ 23 | 0 | 2017-03-04 00:00:00 45 | 1.8 | 2017-03-17 00:00:00 预期
SELECT DISTINCT `id`, number as mynum, MAX(`sent`) AS sentOn FROM `mTable` GROUP BY `id`
结果是:
id | mynum | sentOn
------------------------------------
23 | 0 | 2017-03-04 00:00:00
45 | 1.8 | 2017-03-17 00:00:00
预期结果将是:
id | mynum | sentOn
------------------------------------
23 | 0 | 2017-03-04 00:00:00
45 | 1.9 | 2017-03-17 00:00:00
在第二行中,我希望是具有最新发送日期(2017-03-17 00:00:00)的mynum(1.9)。
相反,SQL查询提供了第二个最新发送日期(2017-03-15 00:00:00)的mynum(1.8)
有什么提示可以解决这个问题吗?
Thank的聚合是获取最新值的错误方法。以下是一种更合适的方式:
select m.*
from mtable m
where m.sent = (select max(m2.sent) from mtable m2 where m.id = m2.id);
如果还需要
mynum
的MAX
值,则需要在mynum
上应用MAX
,例如:
SELECT `id`, MAX(number) as mynum, MAX(`sent`) AS sentOn
FROM `mTable`
GROUP BY `id`
您使用的是
groupby
子句,这是错误的。在中使用聚合功能,选择,然后使用分组依据。。例如:
SELECT id, MAX(number) as mynum, MAX(sent) AS sentOn
FROM mTable
GROUP BY id
此链接有助于查看关于分组依据子句的信息。
此group by子句没有错误,在mysql中允许使用这种语法..而sql server不允许使用这种语法
SELECT id, MAX(number) as mynum, MAX(sent) AS sentOn
FROM mTable
GROUP BY id