2013-10-01 174 views
3

我有查询看起来像这样:如何保持MySQL结果的顺序?

$query = 'select mcf.*, mc.*, o.*, u.* 
      from MyConstructionFile mcf 
      inner join mcf.MyConstruction mc 
      inner join mc.MyConstructionUser o and o.is_owner = true 
      inner join o.User u 
      where mcf.id in ('.implode(',', $ids).')'; 

我需要的结果的顺序完全像那些阵列$ids但我得到的结果通过ID进行排序,我该怎么办呢?

回答

7

添加

'order by find_in_set(mcf.id, \''.implode(',', $ids).'\')'; 

FIND_IN_SET()

+0

它是否工作正常?如预期。 –

+0

是的,OP也应该看看“IN”实际上做了什么。 –

+0

我得到错误'SQL:调用本地函数\'find_in_set \'中的错误参数计数'' – jcubic

1

它应该是这样的:

'order by find_in_set(mcf.id, \''.implode(',', $ids).'\')';