【发布时间】: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 的行,这四行将按该顺序返回。
【问题讨论】:
当我使用 IN 从表中选择一组行时,例如
SELECT x.y, x.z FROM x WHERE x.id IN (23, 55, 44, 12)
是否有一个 SQL 技巧可以让它们按照 IN 集中给定的顺序返回?
因此,在示例中,假设 x 具有 id 为 23、55、44 和 12 的行,这四行将按该顺序返回。
【问题讨论】:
SELECT x.y, x.z FROM x WHERE x.id IN (23, 55, 44, 12)
ORDER BY FIELD (x.id, 23, 55, 44, 12)
【讨论】:
您可以将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');
【讨论】: