【问题标题】:Ordering MySQL results by IN sequence?按顺序排列 MySQL 结果?
【发布时间】:2010-02-28 00:59:45
【问题描述】:

当我使用 IN 从表中选择一组行时,例如

SELECT x.y, x.z FROM x WHERE x.id IN (23, 55, 44, 12)

是否有一个 SQL 技巧可以让它们按照 IN 集中给定的顺序返回?

因此,在示例中,假设 x 具有 id 为 23、55、44 和 12 的行,这四行将按该顺序返回。

【问题讨论】:

    标签: sql mysql


    【解决方案1】:
    SELECT x.y, x.z FROM x WHERE x.id IN (23, 55, 44, 12)
    ORDER BY FIELD (x.id, 23, 55, 44, 12)
    

    【讨论】:

    • MySQL 5.0 支持 ORDER BY FIELD 吗?答:是的!我刚刚检查过。
    【解决方案2】:

    您可以将FIND_IN_SET 用作:

    SELECT x.y, x.z FROM x WHERE x.id IN (23, 55, 44, 12)
    ORDER BY FIND_IN_SET(x.id,'23, 55, 44, 12');
    

    【讨论】:

    • 从表面上看,在你的答案和史蒂夫的答案之间没有什么可以选择的。但是接受哪个?在我尝试的一个简单测试中,ORDER BY FIELD 的速度是原来的两倍多
    猜你喜欢
    • 2023-03-28
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多