2013-10-01 142 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).'\')';