首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL组BY和ORDER不正确工作

SQL组BY和ORDER不正确工作
EN

Stack Overflow用户
提问于 2018-02-26 07:37:27
回答 1查看 138关注 0票数 0

我有疑问:

代码语言:javascript
复制
SELECT p.* FROM `our_projects` AS p 
LEFT OUTER JOIN `news_categories` nc ON p.sort = nc.categories_id 
LEFT OUTER JOIN `news` n ON nc.news_id = n.id
GROUP BY p.id
ORDER BY n.date_show DESC

our_projects表:有9条记录

news_categories表:有多个记录,这是新闻的分类。

news:这是新闻表格。

我要按date_show栏订购新闻,但不能正常工作而分组。我没有得到正确的订单,不是由date_show的新闻。

我按ID排序表our_project为什么?:

1) 108 -2月25日最后消息

2) 111 -2月24日最后消息

3) 114 -2月24日最后消息

4) 117 -2月9日最后消息

5) 120 -2月23日最后消息

6) 123 -2月24日最后一条新闻

7) 126 -最后消息2月23日

8) 129 -2月9日最后消息

9) 132 -2月22日最后消息

为什么??

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-26 07:51:33

您需要的一个解决方法是加入一个子查询,该子查询标识每个新类别的最新新闻故事。在下面的查询中,别名为t的子查询正是这样做的。它将过滤掉所有的新闻报道,除了最近的每一个类别。

代码语言:javascript
复制
SELECT p.*, nc.*, n.*
FROM our_projects p 
LEFT JOIN news_categories nc
    ON p.sort = nc.categories_id 
LEFT JOIN news n
    ON nc.news_id = n.id
INNER JOIN
(
    SELECT t1.categories_id, MAX(t2.date_show) AS max_date_show
    FROM news_categories t1
    INNER JOIN news t2
        ON t1.news_id = t2.id
    GROUP BY t1.categories_id
) t
    ON nc.categories_id = t.categories_id AND
       n.date_show      = t.max_date_show
GROUP BY
    p.id
ORDER BY
    n.date_show;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48983544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档