Zakładamy, że wykonujemy wyszukiwania za pomocą słów kluczowych: keyword1, kluczowe2, słowo kluczowe3Mysql: Zamów przez jak?
istnieją rekordy w bazie danych z kolumny "name":
1: John Doe 2: Samuel Doe 3: John Smith 4: Anna Smith
teraz zapytania:
SELECT * FROM users WHERE (name LIKE "%John%" OR name LIKE "%Doe%")
to będzie wybierz zapisy: 1,2,3 (w tej kolejności) , ale chcę go zamówić przez słowo kluczowe w przykładzie keyword1=John, keyword2=Doe
, dlatego powinien być wymieniony według słów kluczowych: 1,3,2 (ponieważ chcę wyszukać "Doe" po wyszukaniu "John")
Myślałem o SELECT DISTINCT FROM (...... UNION .....)
, ale będzie o wiele łatwiej zamówić jakoś w inny sposób (prawdziwe zapytanie to naprawdę długo)
Czy są jakieś sztuczki, aby stworzyć takie zamówienie?
tak, to działa, dziękuję :) – dfens
jeszcze jedno - jeśli dobrze rozumiem, każdy LIKE będzie wykonany 2 razy w całym zapytaniu? – dfens
@dfens: Zgaduję, że "LIKE" w klauzuli "ORDER BY" będzie wykonywane tylko na danych, które zostały dopasowane przez klauzulę "WHERE", więc powinno być szybciej. – RedFilter