Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.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_Sql - Fatal编程技术网

Mysql 无法选择日期最长的最新行

Mysql 无法选择日期最长的最新行,mysql,sql,Mysql,Sql,上面的DB表结构 结果 看到图片了吗 SELECT max(comment_date), comment_content FROM wp_comments WHERE comment_post_id = 8687 它选择具有最新日期但内容错误的字段 我想在下面的查询中实现这一点,该查询已经有一个GROUP BY语句和多个联接,使用limit会改变结果。您的查询应该失败,因为它是一个聚合查询,没有GROUP BY,但有未聚合的列 SELECT comment_date, comment_cont

上面的DB表结构

结果

看到图片了吗

SELECT max(comment_date), comment_content FROM wp_comments WHERE comment_post_id = 8687
它选择具有最新日期但内容错误的字段


我想在下面的查询中实现这一点,该查询已经有一个GROUP BY语句和多个联接,使用limit会改变结果。

您的查询应该失败,因为它是一个聚合查询,没有
GROUP BY
,但有未聚合的列

SELECT comment_date, comment_content
FROM wp_comments 
WHERE comment_post_id = 8687
AND comment_date = (Select max(b.comment_date) from
wp_comment b)
执行此操作的简单方法是使用
按顺序
限制

SELECT c.*
FROM wp_comments c
WHERE comment_post_id = 8687
ORDER BY comment_date DESC
LIMIT 1;

在子查询中选择“最大日期”,并获取所需的列

SELECT comment_date, comment_content
FROM wp_comments 
WHERE comment_post_id = 8687
AND comment_date = (Select max(b.comment_date) from
wp_comment b)

对具有最大日期的同一表使用联接并搜索一致性

SELECT comment_date, comment_content 
FROM wp_comments a
JOIN (SELECT comment_post_id, max(comment_date) as maxdate FROM wp_comments) b ON 
b.comment_post_id = a.comment_post_id 
and b.maxdate = a.comment_date 
WHERE comment_post_id = 8687