「はい」または「30分」などを返す「利用可能」列があります。この表を並べ替えると、「はい」が最初に来て「30 分」が後に来るところが意図したとおりに機能することがわかりました。
order by available + 0 asc
これは機能しますが、列に +0 を設定する必要がある理由がわかりません。誰かが詳しく説明できますか?
編集: これはクエリの例です。
すべての where 句がここにあるわけではありません。if(x is null) は、結果が null 値ではない場合に何かを返すことに注意してください。
select distinct r.rname, if(b.stime is null, 'Yes', 'Yes') as available, r.mperson
from Rooms r left outer join Bookings b using (rname)
union all
select b.rname, concat(minute(timediff(b.etime, '$sdate')), ' min') as available, r.mperson
from Bookings b inner join Rooms r using(rname)
order by available + 0 asc, rname asc