php - GROUP BY table1.column_name ORDER BY table2.column_name

标签 php mysql group-by

我有一个帖子表和一个用户表,我还有一个介于两者之间的表,其中包含两者之间的关系。一个用户可以有很多帖子等。

可以通过在帖子表的加星标列中添加 0 或 1 来对帖子进行“加星标”。每个用户只能为一个帖子加星标,但有些用户没有加星标的帖子。

我需要创建一个查询,为每个用户提取一个帖子(所以我使用“分组依据”),并且在这些帖子中它应该被加星标,不是所有用户都会有加星标的帖子所以我不能只需使用

WHERE starred = 1

本质上,我想按加星标对群组进行排序,这样如果有加星标的帖子就会加星标,如果没有加星标的帖子就会加星标。

这是我目前所拥有的:

SELECT
   posts.post_title
FROM
   posts
INNER JOIN rel_company_post ON posts.post_id = rel_company_post.post_id
INNER JOIN companies ON rel_company_post.company_id = companies.company_id
GROUP BY companies.company_id
ORDER BY posts.starred DESC

最佳答案

首先,没有更多信息,您的中间表似乎是不必要的。在 posts 表中添加一列“company_id”,以便您可以直接看到帖子的所有者,并删除中间表。

其次你正在寻找“最大”即

选择 max(starred), posts.post_title

如果将 company_id 放入 posts 表中,则甚至不需要进行连接

你的整体查询看起来像

从帖子中选择 max(starred), post_title 按 company_id 分组

关于php - GROUP BY table1.column_name ORDER BY table2.column_name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15937168/

相关文章:

php - 无法让 phpseclib 连接 - 错误 10060

php - 使用不同的名称服务器解析 PHP 中的主机名

php - MySQL 存储过程终止超过 10 秒的连接

PHP MySQLi 准备好的语句获取行,但不显示数据

python - 复杂的 Pandas 聚合后如何收集列值

MySQL 查询 - 分组依据问题

python - Pandas:如何使用plotly作为后端根据日期绘制多条线?

php - Hybridauth 身份验证失败! Facebook 返回了无效的用户 ID

php - Ajax Post 参数

mysql - MySQL 中的所有权建模