我希望我的标题有意义但基本上我需要做的是从mysql表中选择一些行,但我希望首先列出一个特定的行。通常我会为此使用“按字段排序”,但此特定行必须匹配另一个表中的值。
SCHEDULES TABLE
----------
ID
NAME
COMPANYID
DESCRIPTION
COMPANIES TABLE
----------
ID
NAME
ACTIVESCHEDULEID
所以我想从scheduleles表中选择所有的计划,其中companyid = 1,但是需要首先列出作为该公司活动计划的计划,并且该位信息存储在公司表中。
我希望我能做到这样的事情:
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)
但那不适合我。有什么想法吗?
答案 0 :(得分:0)
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
用于第二顺序条件,具体取决于先排序或最后排序的标识。
答案 1 :(得分:0)
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
。