【问题标题】:MySQL selecting featured items on topMySQL在顶部选择特色项目
【发布时间】:2020-10-02 20:37:22
【问题描述】:

假设我有一个表,其字段 item_featured 的值为 Yes 或 No。现在我想对所有带有 YES 的行进行排序,然后是非特征项。所有将按 id 的 DESC 顺序排列。是否可以使用 1 个查询?

【问题讨论】:

    标签: php mysql sql select sql-order-by


    【解决方案1】:

    考虑条件排序:

    order by (item_featured = 'Yes') desc, id desc
    

    基本原理:表达式item_featured = 'Yes' 产生1 如果条件被满足,否则0 - 所以降序排序将'Yes' 行放在第一位。然后,第二个排序条件按 id 降序排列组内的行。

    请注意,正如ChrisG 所评论的,如果'Yes''No' 是唯一可能的值,则可以将其简化为:

    order by item_featured desc, id desc
    

    这是有效的,因为在字符串方面,'Yes' 大于 'No'

    【讨论】:

    • 绝对是正确答案,如果 item_featured 只允许是/否,您也可以通过 item_featured DESC, id DESC
    • @ChrisG:确实,这更简单。我更新了我的答案,谢谢!
    • 两种方式,结果相同;我个人更喜欢你的方式(意味着如果我有这种情况,我会这样做)
    • 不过,有个小疑问,简化版可靠吗?我的意思是第一个完全基于条件和数据,而第二个基于是/否的字符串长度。
    • @RedStarEntertainment:简化选项就可以了,只要您只有“是”或“否”值。它可能甚至表现得更好。
    猜你喜欢
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多