我正在运行wordpress。
因此,请使用逗号分隔的帖子ID字符串,并需要按照在字符串中列出的顺序对找到的帖子进行排序。
没有SQL查询,我可以简单地通过添加'orderby' => 'post__in'
参数来实现。
但是我需要通过sql查询来完成。这是我的SQL查询:
$idList = '2,50,10,25,150,1200,356';
$sql = "SELECT * FROM wp_posts WHERE ID IN ($idList)";
上面的查询返回结果按递增顺序排列,如下所示:$idList = '2,10,25,50,150,356,1200';
但是我需要如何在字符串中对它们进行排序。找不到如何在sql查询中执行相同的操作。有什么想法吗?
有一种方法可以通过使用FIELD()在mySQL中定义自定义ORDER BY顺序
SELECT * FROM wp_posts WHERE ID IN ($idList) ORDER BY field(ID,$idList);
编辑:
看看这个https://stackoverflow.com/a/9378709/5671807。我引用
但是请注意,
1-它使SQL的可移植性降低,因为其他DBMS可能没有此功能。2-当您的语言列表(或其他要排序的值)长得多时,最好有一个带有sortorder列的单独表,然后将其加入查询中进行排序。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句