Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Używanie wyrażenia logicznego w kolejności według klauzuli

MySQL nie ma rzeczywistości pojęcie wartości logicznych i po prostu mapuje TRUE i FALSE do wartości liczbowych 1 i 0 odpowiednio.

W tym przypadku user_id <> ? zwróci 0 dla większości wierszy w Twojej tabeli i 1 dla pozostałych wierszy. Domyślna kolejność sortowania to ASC , co oznacza, że ​​według wszelkiego prawdopodobieństwa żądane wiersze znajdują się na dole zestawu wyników (0/FALSE przyjdź przed 1/TRUE ). Spróbuj zmodyfikować zapytanie, aby to uwzględnić.

( user_id <> ? ) DESC, rating DESC, title

Zakładając, że rzeczywiście jest to problem, zgodność między bazami danych można osiągnąć z łatwością.

IF(user = ?, 0, 1), rating DESC, title


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pymysql callproc() wydaje się wpływać na kolejne wybory

  2. Left Outer Join nie zwraca wszystkich wierszy z mojej lewej tabeli?

  3. MySQL ustawia unikalne_sprawdzenia, ustawia obce_klucze_checks vs. alter table disable keys

  4. MySQL - Aktualizuj, jeśli istnieje, wstawiaj jeszcze dwa klucze

  5. SQL:Wybierz najnowszy wątek i najnowszy post, pogrupowane według forum, uporządkowane według najnowszego posta