我希望我的标题有意义,但基本上我需要做的是从mysql表中选择一些行,但我希望总是先列出一个特定的行。通常我会使用"按字段排序",但这一行必须与另一个表中的值匹配。
SCHEDULES TABLE
----------
ID
NAME
COMPANYID
DESCRIPTION
COMPANIES TABLE
----------
ID
NAME
ACTIVESCHEDULEID
因此,我想从companyid=1的时间表表中选择所有时间表,但需要首先列出该公司的活动时间表,并且该信息存储在companies表中。
我希望我能做这样的事情:
select s.id
from schedules s, companies c
where s.companyid = c.id
and s.companyid = 1
order by field(s.id,s.id = c.activescheduleid)
但这对我不起作用。有什么想法吗?
order by
子句中可以有多个条件。第一个可以是与活动scheduleid匹配:
select s.id
from schedules s join
companies c
on s.companyid = c.id
where s.companyid = 1
order by (s.id = c.activescheduleid) desc, s.id
desc
是因为MySQL中的"true"值被视为1
,而"false"被视为0
。因此,这将返回活动日程id的1
。要使其首先出现,请使用desc
。
select s.id
from schedules s, companies c
where s.companyid = c.id
and s.companyid = 1
order by
s.id,
s.id = c.activescheduleid
您可能希望使用ASC
或DESC
作为第二顺序条件,具体取决于排序在第一位或最后一位的标识。