MySQL tidak memiliki nyata gagasan boolean, dan cukup memetakan TRUE
dan FALSE
ke nilai numerik 1
dan 0
secara bergantian.
Dalam hal ini user_id <> ?
akan mengembalikan 0 untuk sebagian besar baris di tabel Anda dan 1 untuk baris lainnya. Urutan pengurutan default adalah ASC
, artinya kemungkinan besar baris yang Anda inginkan berada di bawah dari kumpulan hasil Anda (0/FALSE
datang sebelum 1/TRUE
). Coba ubah kueri Anda untuk mengakomodasi ini.
( user_id <> ? ) DESC, rating DESC, title
Dengan asumsi ini memang masalahnya, kompatibilitas lintas-basis data dapat dicapai dengan mudah.
IF(user = ?, 0, 1), rating DESC, title