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

关于mysql - MySql:按值排序结果,其中value =其他表中的value,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17633333/

10-09 08:34
查看更多