我有一個「可用」列,它返回「是」或例如「30分鐘」。 爲了對這張表進行排序,我們發現這是按照預期工作的,其中「是」是第一位,而「30分鐘」是在後面。
order by available + 0 asc
即使這個工作,我們不知道爲什麼我們必須把+0的列。有人可以詳細說明嗎?在order子句中使用+0
編輯:這是一個查詢的例子
請注意,所有where子句不在這裏,if(x爲null)是返回一些東西,如果沒有結果aka 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
你能否提供表格結構和最簡單的查詢來顯示問題?否則,一切都只是猜測。 – Ben
這會將該列視爲數字。不知道這是如何適用於「是」和「30分鐘」,但我不會依賴這種行爲。嘗試轉換更明確。 – Thilo
「是」和「30分鐘」並不真正合在一起......一個帶有「0」和「30」的整數列會更好(並且可能快一百萬倍) – Alex