Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-显示每个组的最新记录的不同结果_Mysql - Fatal编程技术网

MySQL-显示每个组的最新记录的不同结果

MySQL-显示每个组的最新记录的不同结果,mysql,Mysql,我试图找出最有效的方法来检索每个组的最新记录 我设法生成两个不同的查询。但细节略有不同 这些是gcm_通知记录。 有更多的记录存在。但现在我只想关注一张唱片。从图中,我们可以看到最新的id=1393,标志=1 现在,我尝试使用两个不同的查询来检索每个组的最新记录 备选案文1: 备选案文2: 如您所见,选项2显示正确的结果 这是我的问题,, 为什么选项1显示正确的id,但标志值错误?是否因为MAX只更新当前id而不更新标志 -很抱歉,如果SQL查询太混乱且难以阅读,因为我不知道如何突出显示语法-

我试图找出最有效的方法来检索每个组的最新记录

我设法生成两个不同的查询。但细节略有不同

这些是gcm_通知记录。 有更多的记录存在。但现在我只想关注一张唱片。从图中,我们可以看到最新的id=1393,标志=1

现在,我尝试使用两个不同的查询来检索每个组的最新记录

备选案文1:

备选案文2:

如您所见,选项2显示正确的结果

这是我的问题,, 为什么选项1显示正确的id,但标志值错误?是否因为MAX只更新当前id而不更新标志


-很抱歉,如果SQL查询太混乱且难以阅读,因为我不知道如何突出显示语法-

选择的未聚合列是不确定的,这就是第一个查询不正确的原因

MySQL手册:
如果仅禁用了_FULL _GROUP _BY,则GROUP BY标准SQL使用的MySQL扩展允许select list、HAVING condition或ORDER BY list引用未聚合的列,即使这些列在功能上不依赖于GROUP BY列。这导致MySQL接受前面的查询。在这种情况下,服务器可以从每个组中自由选择任何值,因此,除非它们相同,否则选择的值是不确定的,这可能不是您想要的。此外,添加ORDERBY子句不会影响从每个组中选择值。结果集排序发生在选择值之后,排序依据不影响服务器在每个组中选择的值。如果您知道,由于数据的某些属性,每个未在GROUP BY中命名的非聚集列中的所有值对于每个组都是相同的,则仅禁用“完整”GROUP BY非常有用。

这就是我要寻找的解释!谢谢你的介绍。
SELECT id, post_id, registration_id, flag
FROM gcm_notification
WHERE post_id = 1743
AND registration_id = "ezDCef_3ORo:APA91bG-sSjaMR9OwylrV7A0H7dvTEAfwJNYGUa3Ud5QZhNIh7-r2peLrb9H33pUs_KJkYisnsIUL4bUT1xrqffOv2jYXBB348oNgNVmLHGZrmgLFdWQiSVRfq9A8BhAGoBB0xN-aDs-"
SELECT MAX(id) as latest_id, post_id, flag
FROM gcm_notification
WHERE registration_id = "ezDCef_3ORo:APA91bG-sSjaMR9OwylrV7A0H7dvTEAfwJNYGUa3Ud5QZhNIh7-r2peLrb9H33pUs_KJkYisnsIUL4bUT1xrqffOv2jYXBB348oNgNVmLHGZrmgLFdWQiSVRfq9A8BhAGoBB0xN-aDs-"
GROUP BY post_id
SELECT id, post_id, flag
FROM gcm_notification t1
    RIGHT JOIN (
            SELECT MAX(id) AS latest 
            FROM wp_spc_gcm_notification 
            WHERE registration_id =  "ezDCef_3ORo:APA91bG-sSjaMR9OwylrV7A0H7dvTEAfwJNYGUa3Ud5QZhNIh7-r2peLrb9H33pUs_KJkYisnsIUL4bUT1xrqffOv2jYXBB348oNgNVmLHGZrmgLFdWQiSVRfq9A8BhAGoBB0xN-aDs-"
            GROUP BY post_id) t2
    ON t1.id = t2.latest
WHERE registration_id = "ezDCef_3ORo:APA91bG-sSjaMR9OwylrV7A0H7dvTEAfwJNYGUa3Ud5QZhNIh7-r2peLrb9H33pUs_KJkYisnsIUL4bUT1xrqffOv2jYXBB348oNgNVmLHGZrmgLFdWQiSVRfq9A8BhAGoBB0xN-aDs-"
GROUP BY post_id