我有下表
DROP TABLE IF EXISTS test
.foo
; CREATE TABLE test
.foo
( id
int(10) unsigned NOT NULL auto_increment, name
varchar(45) NOT NULL, PRIMARY KEY (id
) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 然后我尝试根据主键获取记录
SELECT * FROM foo f where f.id IN (2, 3, 1); 然后我得到以下结果
+----+--------+ | id | name | +----+--------+ | 1 | first | | 2 | second | | 3 | third | +----+--------+ 3 rows in set (0.00 sec) 可以看到,结果按ID排序。我试图实现的结果是按照查询中提供的顺序对结果进行排序。给定这个例子,它应该返回
+----+--------+ | id | name | +----+--------+ | 2 | second | | 3 | third | | 1 | first | +----+--------+ 3 rows in set (0.00 sec)
您发布的查询与您想要的结果顺序无关,而只是您想要的结果。
为了订购您的结果,我将使用ORDER BY FIELD():
SELECT * FROM foo f where f.id IN (2, 3, 1) ORDER BY FIELD(f.id, 2, 3, 1); FIELD的参数列表可以是可变长度。来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。