Php 如何按其他表中最近的记录对记录进行排序
我试图按最近的活动(评论)排序语句。但是,如果语句没有注释,下面的查询将不会在末尾显示该语句。如何更改查询,以便最后显示没有注释的语句Php 如何按其他表中最近的记录对记录进行排序,php,mysql,sql,comments,sql-order-by,Php,Mysql,Sql,Comments,Sql Order By,我试图按最近的活动(评论)排序语句。但是,如果语句没有注释,下面的查询将不会在末尾显示该语句。如何更改查询,以便最后显示没有注释的语句 SELECT `statements`.`id`, `statement`, `statements`.`timestamp`, `statements`.`published`, `image`, `statements`.`author_id`, `statements`.`ip_address`, `username`,
SELECT
`statements`.`id`,
`statement`,
`statements`.`timestamp`,
`statements`.`published`,
`image`,
`statements`.`author_id`,
`statements`.`ip_address`,
`username`,
`comment_count`
FROM
(`statements`)
INNER JOIN `comments`
ON `comments`.`statement_id` = `statements`.`id`
LEFT JOIN `users`
ON `users`.`id` = `statements`.`author_id`
WHERE `statements`.`published` > 0
GROUP BY `statements`.`id`
ORDER BY MAX(comments.id)
尝试
左连接以查看注释表:
SELECT `statements`.`id`, `statement`, `statements`.`timestamp`, `statements`.`published`, `image`, `statements`.`author_id`, `statements`.`ip_address`, `username`, `comment_count`
FROM (`statements`)
LEFT JOIN `comments` ON `comments`.`statement_id` = `statements`.`id`
LEFT JOIN `users` ON `users`.`id` = `statements`.`author_id`
WHERE `statements`.`published` > 0
GROUP BY `statements`.`id`
ORDER BY MAX(comments.id) DESC
按最大注释id降序将最新注释放在语句顶部
关于MySQL文档
在执行ORDER BY时,如果执行,则首先显示空值
订购人。。。ASC和最后一个,如果您按。。。描述
没有注释的语句(MAX(comments.id)为NULL
)必须放在结果的底部。请尝试左连接以查看注释
表:
SELECT `statements`.`id`, `statement`, `statements`.`timestamp`, `statements`.`published`, `image`, `statements`.`author_id`, `statements`.`ip_address`, `username`, `comment_count`
FROM (`statements`)
LEFT JOIN `comments` ON `comments`.`statement_id` = `statements`.`id`
LEFT JOIN `users` ON `users`.`id` = `statements`.`author_id`
WHERE `statements`.`published` > 0
GROUP BY `statements`.`id`
ORDER BY MAX(comments.id) DESC
按最大注释id降序将最新注释放在语句顶部
关于MySQL文档
在执行ORDER BY时,如果执行,则首先显示空值
订购人。。。ASC和最后一个,如果您按。。。描述
没有注释的语句(MAX(comments.id)为NULL
)必须放在结果的底部。请尝试左连接以查看注释
表:
SELECT `statements`.`id`, `statement`, `statements`.`timestamp`, `statements`.`published`, `image`, `statements`.`author_id`, `statements`.`ip_address`, `username`, `comment_count`
FROM (`statements`)
LEFT JOIN `comments` ON `comments`.`statement_id` = `statements`.`id`
LEFT JOIN `users` ON `users`.`id` = `statements`.`author_id`
WHERE `statements`.`published` > 0
GROUP BY `statements`.`id`
ORDER BY MAX(comments.id) DESC
按最大注释id降序将最新注释放在语句顶部
关于MySQL文档
在执行ORDER BY时,如果执行,则首先显示空值
订购人。。。ASC和最后一个,如果您按。。。描述
没有注释的语句(MAX(comments.id)为NULL
)必须放在结果的底部。请尝试左连接以查看注释
表:
SELECT `statements`.`id`, `statement`, `statements`.`timestamp`, `statements`.`published`, `image`, `statements`.`author_id`, `statements`.`ip_address`, `username`, `comment_count`
FROM (`statements`)
LEFT JOIN `comments` ON `comments`.`statement_id` = `statements`.`id`
LEFT JOIN `users` ON `users`.`id` = `statements`.`author_id`
WHERE `statements`.`published` > 0
GROUP BY `statements`.`id`
ORDER BY MAX(comments.id) DESC
按最大注释id降序将最新注释放在语句顶部
关于MySQL文档
在执行ORDER BY时,如果执行,则首先显示空值
订购人。。。ASC和最后一个,如果您按。。。描述
没有注释的语句(MAX(comments.id)为NULL
)必须放在结果的底部。
SELECT
statements.*,
cm.id
FROM
statements LEFT JOIN
(SELECT statement_id, MAX(id) id FROM comments GROUP BY statement_id) cm
ON cm.statement_id = statements.id
LEFT JOIN users
ON users.id = statements.author_id
WHERE statements.published > 0
ORDER BY cm.id;
通过这种方式,您不需要依赖MySQL group by hack,并且此查询应该可以在任何其他数据库中工作。我会做一些完全不同的事情:
SELECT
statements.*,
cm.id
FROM
statements LEFT JOIN
(SELECT statement_id, MAX(id) id FROM comments GROUP BY statement_id) cm
ON cm.statement_id = statements.id
LEFT JOIN users
ON users.id = statements.author_id
WHERE statements.published > 0
ORDER BY cm.id;
通过这种方式,您不需要依赖MySQL group by hack,并且此查询应该可以在任何其他数据库中工作。我会做一些完全不同的事情:
SELECT
statements.*,
cm.id
FROM
statements LEFT JOIN
(SELECT statement_id, MAX(id) id FROM comments GROUP BY statement_id) cm
ON cm.statement_id = statements.id
LEFT JOIN users
ON users.id = statements.author_id
WHERE statements.published > 0
ORDER BY cm.id;
通过这种方式,您不需要依赖MySQL group by hack,并且此查询应该可以在任何其他数据库中工作。我会做一些完全不同的事情:
SELECT
statements.*,
cm.id
FROM
statements LEFT JOIN
(SELECT statement_id, MAX(id) id FROM comments GROUP BY statement_id) cm
ON cm.statement_id = statements.id
LEFT JOIN users
ON users.id = statements.author_id
WHERE statements.published > 0
ORDER BY cm.id;
通过这种方式,您不必依赖MySQL group by hack,并且此查询应该可以在任何其他数据库中运行。@user3835276,请尽量不要使用“不工作”这一短语。我们通常认为它是最没有帮助的故障报告。:-)
。考虑这个答案让你走吗?我希望一个<代码>语句总是有一个<代码>用户< /代码>,所以期望它可以是一个<代码>内部连接< /代码>?@ HalFER通过最近的评论活动来查询命令主题/语句/线程。但是,查询无法显示没有注释的项目。例如。(声明1:今天发表评论;声明2:昨天发表评论;声明3:无评论)。除了语句3没有show@halfer,在这种情况下,您需要内部连接用户
,但不需要注释
,请尝试取消订购人
以查看其影响。@user3835276,请尝试不要使用短语“不起作用”。我们通常认为它是最没有帮助的故障报告。:-)
。考虑这个答案让你走吗?我希望一个<代码>语句总是有一个<代码>用户< /代码>,所以期望它可以是一个<代码>内部连接< /代码>?@ HalFER通过最近的评论活动来查询命令主题/语句/线程。但是,查询无法显示没有注释的项目。例如。(声明1:今天发表评论;声明2:昨天发表评论;声明3:无评论)。除了语句3没有show@halfer,在这种情况下,您需要内部连接用户
,但不需要注释
,请尝试取消订购人
以查看其影响。@user3835276,请尝试不要使用短语“不起作用”。我们通常认为它是最没有帮助的故障报告。:-)
。考虑这个答案让你走吗?我希望一个<代码>语句总是有一个<代码>用户< /代码>,所以期望它可以是一个<代码>内部连接< /代码>?@ HalFER通过最近的评论活动来查询命令主题/语句/线程。但是,查询无法显示没有注释的项目。例如。(声明1:今天发表评论;声明2:昨天发表评论;声明3:无评论)。除了语句3没有show@halfer,在这种情况下,您需要内部连接用户
,但不需要注释
,请尝试取消订购人
以查看其影响。@user3835276,请尝试不要使用短语“不起作用”。我们通常认为它是最没有帮助的故障报告。:-)
。考虑这个答案让你走吗?我希望一个<代码>语句总是有一个<代码>用户< /代码>,所以期望它可以是一个<代码>内部连接< /代码>?@ HalFER通过最近的评论活动来查询命令主题/语句/线程。但是,查询无法显示没有注释的项目。例如。(声明1:今天发表评论;声明2:昨天发表评论;声明3:无评论)。除了语句3没有show@halfer,在这种情况下,您需要内部连接
用户
,但不需要注释
尝试取消订单
以查看其影响。此查询的可能重复的可能重复的可能重复不需要MySQL hack。这足够放MAX(comments.id