在image_tags
表中我有很多aaa
个标签,只有一个bbb
标签
我希望获得带有此标记的行,但基本上是IN ('bbb', 'aaa')
的顺序
我希望bbb
代码位于aaa
代码之后,然后通过id desc对其进行排序
我得到了这个,但它不起作用,我仍然在顶部获得aaa
标记
SELECT image_tags.tag
FROM `image_tags`
WHERE image_tags.tag
IN (
'bbb', 'aaa'
)
ORDER BY FIELD( 'bbb', 'aaa' ) , id DESC
LIMIT 20
答案 0 :(得分:2)
我想你想要:
ORDER BY FIELD(image_tags.tag, 'bbb', 'aaa' ) , id DESC
您错过了field()
的第一个参数。
答案 1 :(得分:0)
试试这个,基本上你想按降序排列名称,然后是id desc。
SELECT image_tags.tag
FROM `image_tags`
WHERE image_tags.tag
IN (
'bbb', 'aaa'
)
ORDER BY image_tags.tag Desc , id DESC
LIMIT 20
修改强>
我的问题有问题,解决问题的一种方法已经由@Gordon Linoff说明,它将在mysql中运行,另一种解决方案
SELECT image_tags.tag
FROM `image_tags`
WHERE image_tags.tag
IN (
'bbb', 'aaa'
)
ORDER BY case when 'bbb' then 1 when 'aaa' then 2 end , id DESC
这也适用于sql。