Mysql
 sql >> база данни >  >> RDS >> Mysql

Сортиране на нули последно

Прав си. Без причина, която мога да разбера, MySQL приема двусмислен ORDER BY стига името, което предоставяте, да не се обработва по никакъв начин (няма начин да се сетя. Може би съществуват други).

Веднага щом стане, двусмислеността се отхвърля.

Това е прието (и излишно):

select b.id, a.name as name
    FROM client AS a JOIN client AS b ON (a.id = b.id)
    ORDER BY name, name;

докато COALESCE(name, '') , name IS NULL , name OR NULL всички са отхвърлени.

Очевидното решение е да използвате различно име за псевдонима, което не се появява в нито една таблица.

Друга възможност би била да се създаде вложена заявка:

SELECT * FROM ( your query here, without ORDER ) AS original
ORDER BY IF($sortcol is NULL,1,0), $sortcol;

Това е:

$sortcol="boat";
$sql = <<<SQL
   SELECT * FROM (
      SELECT fleet,b.boat as boat,owner FROM boats as b 
         LEFT JOIN owners as o ON  b.boat=o.boat 
   ) AS original
   ORDER BY IF($sortcol is NULL,1,0), $sortcol;
SQL;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вземете сумата на MySQL колоната в PHP

  2. mysql_real_escape_string() и mysql_escape_string() достатъчни ли са за сигурността на приложението?

  3. SQLAlchemy - Получаване на списък с таблици

  4. START TRANSACTION вътре BEGIN ... END контекст или извън и LOOP синтаксис

  5. Къде е еквивалентът на MySql 5.6 на `MySQLInstanceConfig.exe` за редактиране на конфигурационни файлове?