我有一个IN
子句查询,我在其中传递了此ID' S (10,19,23,24,28,33,45,46,1,4,7,8,12,16,18,22,29)
我的查询是,
的 SELECT
{post_jobs {1}} ID为.
{post_jobs {1}} ID为FROM
它正确执行并返回结果首先id喜欢1然后4然后7等等......这是升序
我的需要是获得id 10然后19然后23的第一个结果,因为我传递的ID的顺序是有任何方式在输出中获得这种类型的结果。
答案 0 :(得分:1)
试试这个
SELECT post_jobs.id FROM post_jobs WHERE id
IN(10,19,23,24,28,33,45,46,1,4,7,8,12,16,18,22,29) ORDER BY
FIELD(id,10,19,23,24,28,33,45,46,1,4,7,8,12,16,18,22,29);
在Codeigniter中
$this->db->_protect_identifiers = FALSE;
$this->db->select('id');
$this->db->where_in('id',array(10,19,23,24,28,33,45,46,1,4,7,8,12,16,18,22,29));
$this->db->order_by('FIELD(id, 10,19,23,24,28,33,45,46,1,4,7,8,12,16,18,22,29)');
$this->db->get('post_jobs');
如果您使用的是codeigniter 3,则写入或删除protect_identifiers行
$this->db->protect_identifiers(False);
答案 1 :(得分:1)
试试这个
SELECT post_jobs.id FROM post_jobs WHERE post_jobs.id
IN(10,19,23,24,28,33,45,46,1,4,7,8,12,16,18,22,29) ORDER BY
FIND_IN_SET(post_jobs.id,10,19,23,24,28,33,45,46,1,4,7,8,12,16,18,22,29);