MySql:按值排序结果,其中value=其他表中的值



我希望我的标题有意义,但基本上我需要做的是从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

您可能希望使用ASCDESC作为第二顺序条件,具体取决于排序在第一位或最后一位的标识。

相关内容

最新更新