订购MySQL结果BY日期,也使用LIKE

时间:2014-02-18 17:59:25

标签: php mysql

我有这个表request的列

request_id | users_ids | created

我需要按created获取结果顺序,但首先获取users_ids中不存在用户ID的结果。

我使用的是FIELD()NOT LIKE吗?

我该怎么做?

3 个答案:

答案 0 :(得分:0)

ORDER BY IF(FIND_IN_SET('111', user_ids)>0,1,0),created

其中'111'是您的用户ID。 但是,正如Marc在评论中指出的那样 - 你应该通过改变你的架构设计来避免这种情况。

答案 1 :(得分:0)

您不应将user_ids存储在字段中。你应该有一个单独的关联/联结表。

您可以order by这样做(假设user_ids以逗号分隔):

order by find_in_set($user_id, user_ids) = 0 desc,
         created

编辑:

如果它们是空格分隔的,请执行以下操作之一:

order by find_in_set($user_id, replace(user_ids, ' ', ',')) = 0 desc,
         created;

order by concat(' ', user_ids, ' ') like concat('% ', $user_id'% '),
         created

答案 2 :(得分:0)

您还可以尝试将查询拆分为两个查询。

// QUERY 1
SELECT * FROM request WHERE users_ids = '' ORDER BY created

// QUERY 2
SELECT * FROM request WHERE users_ids != '' ORDER BY created