Funkcja FIELD()
Funkcja FIELD() w MySQL zwraca pozycję pierwszego podanego stringu w zbiorze stringów, podanych jako kolejne argumenty funkcji.
Niby nic specjalnego, ale jednak ma ona jedno kluczowe zastosowanie!
Wyobraźmy sobie taką kwerendę:
SELECT * FROM `items` WHERE `id` IN(1, 8, 2, 14, 16, 7)
Najprostsza w świecie kwerenda zwracająca nam przedmioty z jakiegośtam zbioru. W jakiej kolejności będą posortowane wyniki? Najprawdopodobniej wg. PRIMARY KEY. Ale co zrobić, jeżeli chcemy by były w takiej, jaka widnieje w IN() - może są to dane uzyskane z zewnętrznego źródła, posortowane tak, jak oczekuje tego klient?
Tu z pomocą przychodzi nam FIELD() - dzięki tej funkcji wszystko posortujemy tak jak chcemy i to błyskiem. Wystarczy przerobić kwerendę na następującą:
SELECT * FROM `items` WHERE `id` IN(1, 8, 2, 14, 16, 7) ORDER BY FIELD(`id`, 1, 8, 2, 14, 16, 7)
Dzięki temu wyniki będą posortowane dokładnie w takiej kolejności, w jakiej występują w podanym zbiorze!