我試圖使用自定義命令,像這樣一個SELECT
聲明resutls排序:MySQL的自定義排序順序ORDER BY FIELD()發出
SELECT * FROM table ORDER BY FIELD(id,4,5,6) LIMIT 6
我期待能與IDS返回的行:4,5,6,1,2,3
但相反,我得到1,2,3,7,8,9
。我究竟做錯了什麼?
作爲一個方面說明:此前運行該查詢,我從數據庫中使用不同的SELECT
拉此排序順序與GROUP_CONCAT
功能,像這樣:
SELECT group_concat(clickID ORDER BY count DESC separator ',') from table2 WHERE searchphrase='$searchphrase'
這將導致4,5,6
然後在主查詢中使用它。有沒有更快的方法在一個聲明中寫這一切?
你說你在做一個group_cocnat,所以'id'可能是一個字符串,並且你將它與整數進行比較... –
對不起,'GROUP_CONCAT'在此查詢之前完成並返回'4,5 ,6' 。 ID是'BIGINT' – cronoklee
然後就是你的問題。 'FIELD(id,'4,5,6')'基本上是'id ='4,5,6''。字段()中的第一個參數將針對每個後續參數進行測試。你的csv字符串是一個單一的單一值。您可能需要'find_in_set()'。 –