栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

MySQL排序依据

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySQL排序依据

ORDER BY
在子查询中使用an 并不是解决此问题的最佳方法。

获得

max(post_date)
作者身份的最佳解决方案是使用子查询返回最大日期,然后在最大日期和最大日期两者上将
post_author
其联接到表中。

解决方案应该是:

SELECt p1.* FROM wp_posts p1INNER JOIN(    SELECt max(post_date) MaxPostDate, post_author    FROM wp_posts    WHERe post_status='publish'       AND post_type='post'    GROUP BY post_author) p2  ON p1.post_author = p2.post_author  AND p1.post_date = p2.MaxPostDateWHERe p1.post_status='publish'  AND p1.post_type='post'order by p1.post_date desc

如果您具有以下示例数据:

CREATE TABLE wp_posts    (`id` int, `title` varchar(6), `post_date` datetime, `post_author` varchar(3));INSERT INTO wp_posts    (`id`, `title`, `post_date`, `post_author`)VALUES    (1, 'Title1', '2013-01-01 00:00:00', 'Jim'),    (2, 'Title2', '2013-02-01 00:00:00', 'Jim');

子查询将返回最大日期和作者:

MaxPostDate | Author2/1/2013    | Jim

然后,由于您将其重新连接到表上,因此在这两个值上,您都将返回该帖子的完整详细信息。

请参阅带有演示的SQL Fiddle。

为了进一步说明我有关使用子查询准确返回此数据的评论。

MySQL不会强迫您进入列表中

GROUP BY
包括的每一列
SELECT
。因此,如果仅
GROUPBY
一列但总共返回10列,则不能保证
post_author
返回属于的其他列值。如果该列不在
GROUP BY
MySQL中,则选择应返回的值。

将子查询与聚合函数一起使用将确保每次都返回正确的作者和帖子。

附带说明一下,虽然MySQL允许您

ORDER BY
在子查询中使用,并允许您将不适用于列表中的
GROUPBY
每个列,但
SELECT
在其他数据库(包括SQL Server)中不允许这种行为。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/382316.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号