Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menyortir Null terakhir

Kamu benar. Tanpa alasan yang dapat saya pahami, MySQL menerima ORDER BY yang ambigu selama nama yang Anda berikan tidak ditangani dengan cara apa pun (tidak mungkin saya pikirkan. Mungkin yang lain ada).

Segera setelah itu, ambiguitas ditolak.

Ini diterima (dan berlebihan):

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

sementara COALESCE(name, '') , name IS NULL , name OR NULL semuanya ditolak.

Solusi yang jelas adalah dengan menggunakan nama yang berbeda untuk alias, yang tidak muncul di kedua tabel.

Kemungkinan lain adalah membuat kueri bersarang:

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

Yaitu:

$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. Fungsi MySQL COS() – Mengembalikan Kosinus Angka di MySQL

  2. sql query untuk mencari dan mengganti teks di semua baris

  3. Refresh konten div hanya jika konten baru ditambahkan ke database

  4. Tidak dapat memuat Driver QMYSQL di PySide2

  5. Memfilter kueri MySQL di PHP