gpt4 book ai didi

php - MySQL 内部连接查询只返回不同的值

转载 作者:行者123 更新时间:2023-11-29 05:23:57 25 4
gpt4 key购买 nike

以下查询适用于从数据库返回新闻文章的分页脚本。它有效,但不返回任何具有相同日期或标题的项目。

我如何重写它以获得具有相同标题和/或相同日期的项目?

查询:

"SELECT p.post_id, p.post_title, p.post_detail, p.post_user, p.post_slug, p.post_date, p.post_type 
FROM ".TBL_POSTS." as p
LEFT JOIN ".TBL_POST_CATEGORIES." as c
ON c.post_ID = p.post_id
WHERE p.post_type = 'post' AND c.category_ID = 5
GROUP BY p.post_date DESC", 10);

这是一个POST表的例子

--------------------------------------------
post_id | post_title | post_date
--------------------------------------------
10 | news post 1 | 2014-02-13 21:09:45
--------------------------------------------
12 | news post 2 | 2014-02-14 21:09:45
--------------------------------------------

这是 CATEGORIES 表的示例

--------------------------------------------
id | post_ID | category_ID
--------------------------------------------
1 | 10 | 5
--------------------------------------------
2 | 12 | 5
--------------------------------------------

最佳答案

问题是 GROUP BY 的用法。

SQL 仅返回一条记录每个不同的分组列值 - 每隔一列,不在 group by 子句中,应该在聚合函数中。

不幸的是,MySQL 默默地接受了这个不正确的查询(这一直是许多错误的根源)并选择了一条记录 "at random"从分组。在这种情况下,由于分组中只有 post_date,因此每个唯一日期/时间只有一条记录。


我怀疑一个“正确的”行为只是删除 GROUP BY(可能用 ORDER BY 替换它),尽管这可能不是本意 - 用 expected< 更新帖子/em> 输出可能会导致有关如何更新查询的有用建议。

关于php - MySQL 内部连接查询只返回不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22419714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com