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

Можете ли да добавите оператор if в ORDER BY?

Е, можете да използвате IF функция в MySQL (Обърнете внимание на акцента върху function тъй като има и несвързан IF изявление )...:

ORDER BY IF(TYPE='Member', LNAME, GROUPNAME) ASC

Въпреки това, в този случай изглежда, че по-добрият избор (от гледна точка на гъвкавостта) би бил CASE изявление :

ORDER BY 
    CASE `type` 
        WHEN 'Member' THEN LNAME 
        WHEN 'Group' THEN GROUPNAME
        ELSE 1 END 
    ASC

Имайте предвид, че целият блок от CASE до END трябва да се разглежда като едно цяло. Резултатът от което е това, срещу което се опитвате да сортирате (следователно защо ASC идва след блока, а не вътре в него)...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Алтернативи на pt-query-digest - MySQL управление на заявки и наблюдение с ClusterControl

  2. mysqli:може ли да подготви множество заявки в едно изявление?

  3. Проверка на множество колони за една стойност

  4. Как да извадя часовете от дата и час в MySQL?

  5. Сортиране в MySQL с помощта на подреждане по клауза