2014-04-27 66 views
0

我有这个疑问:MySQL查询排序查询本身

SELECT `name` FROM `products` WHERE `id` = 0 OR `id` = 4 OR `id` = 2 
  • 基本上,我想查询由OR语句的顺序(基本上,第一个返回的对象将与排序ID 0,第二个将是4,第三个是2)。 这可能吗?

回答

3

尝试s

select name from products WHERE id=0 OR id= 4 OR id=2 order by FIELD(id,0,4,2); 

FIELD()返回4,2,...列表中索引(位置)0。如果未找到0,则返回0。

注意:这将减慢您的查询一下。

4

是你需要为

SELECT `name` FROM `products` WHERE `id` = 0 OR `id` = 4 OR `id` = 2 
order by field(id,0,4,2) 

这里是一个demo 表是不是在你的情况一样使用,以场()函数,但你可能会得到一个想法,它是如何工作的。

+0

啊@Notulysses我不好纠正它:-) –

0

我相信你正在寻找FIND_IN_SET()功能:

SELECT name FROM products WHERE id IN (0,4,3) ORDER BY FIND_IN_SET(id, '0,4,3'); 
1

这是另一种思路 -

选择name FROM products WHERE id = 0或id = 4或id = 2 ORDER BY CASE WHEN ID = 0 THEN 1 WHEN'ID'= 4 THEN 2 WHEN'ID'= 2 THEN 3 ELSE'ID'END