在使用 WHERE IN 子句的结构化查询语言 (SQL) 语句中,返回的行可能并不总是遵循子句中指定的顺序。
要纠正此问题,可以将 FIELD() 函数与 ORDER BY 子句结合使用。 FIELD() 函数根据 IN 子句中指定的值顺序为每行分配一个位置。通过根据指定的位置对行进行排序,可以保留 WHERE IN 子句中的原始顺序。
例如,考虑以下 SQL 查询:
SELECT * FROM table WHERE id IN (118, 17, 113, 23, 72);
此查询返回根据 ID 列按升序排列行,忽略 WHERE IN 子句中指定的顺序。要按照 IN 子句指定的顺序获取行,请执行以下查询:
SELECT * FROM table WHERE id IN (118, 17, 113, 23, 72) ORDER BY FIELD(id, 118, 17, 113, 23, 72);
在此查询中,ORDER BY 子句根据值的顺序排列行 (118, 17, 113, 23, 72) 在 FIELD() 函数中指定。因此,返回的行将遵循 WHERE IN 子句中定义的顺序。
以上是如何使用 WHERE IN 子句维护 SQL 查询中的行顺序?的详细内容。更多信息请关注PHP中文网其他相关文章!