在使用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中文網其他相關文章!