我有一列“可用”,它返回“是”或例如“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