gpt4 book ai didi

mysql - 通过使用 where IN 运算符进行排序

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

如何对 mysql 数据库进行查询,以降序对结果进行排序,条件是列表中存在的特定项目排在第一位。例如,我有一个包含一些帖子“post_feeds”文章的表,该表与类别映射表“post_category_mapping”中的类别进行映射。我尝试按排序顺序从表“post_feeds”中检索所有帖子,但条件是列表中存在的 Category_id 排在第一位。

我尝试通过这个查询来做到这一点:

SELECT DISTINCT post_category_mapping.post_id,
posts_feeds.post_title
FROM post_category_mapping
INNER JOIN posts_feeds
ON post_category_mapping.post_id = posts_feeds.post_id
ORDER BY CASE WHEN post_category_mapping.category_id IN (1,6)
THEN posts_feeds.id END DESC,
posts_feeds.id DESC"

最佳答案

我认为您的查询很接近。要在订购时使 CASE 技巧发挥作用,您可以为匹配的类别 ID 分配 0,为不匹配的 ID 分配 1:

SELECT DISTINCT t1.post_id,
t2.post_title
FROM post_category_mapping t1
INNER JOIN posts_feeds t2
ON t1.post_id = t2.post_id
ORDER BY CASE WHEN t1.category_id IN (1,6) THEN 0 ELSE 1 END,
t2.id DESC

这会将 category_id 为 1 或 6 的所有记录放置在所有不具有这些值的记录之前。在每个匹配/不匹配 block 中,记录将按 posts_feed.id 降序排列。

关于mysql - 通过使用 where IN 运算符进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42132176/

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