sql >> Databáze >  >> RDS >> Mysql

Použití booleovských výrazů v pořadí po klauzuli

MySQL nemá žádné skutečné pojem booleans a jednoduše mapy TRUE a FALSE na číselné hodnoty 1 a 0 respektive.

V tomto případě user_id <> ? vrátí 0 pro většinu řádků v tabulce a 1 pro ostatní řádky. Výchozí pořadí řazení je ASC , což s největší pravděpodobností znamená, že požadované řádky jsou dole vaší sady výsledků (0/FALSE přijít před 1/TRUE ). Zkuste upravit svůj dotaz, aby tomu vyhovoval.

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

Za předpokladu, že jde skutečně o tento problém, lze snadno dosáhnout kompatibility mezi databázemi.

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


  1. JDBC:Vkládání hodnot data do MySQL

  2. Jak ukládat metriky pro mou webovou aplikaci?

  3. Chyby @OneToMany v MySQL:Nelze odstranit nebo aktualizovat nadřazený řádek:omezení cizího klíče selže

  4. Tabulka MYSQL se statickými a dynamickými hodnotami