比较来自世界各地的卖家的域名和 IT 服务价格

MySQL-ORDER在内部的值 IN//

我希望对以下请求中返回的项目进行排序,

它们对功能的输入顺序

IN// .

INPUT:


SELECT id, name FROM mytable WHERE name IN /'B', 'A', 'D', 'E', 'C'/;


OUTPUT:


| id | name |
^--------^---------^
| 5 | B |
| 6 | B |
| 1 | D |
| 15 | E |
| 17 | E |
| 9 | C |
| 18 | C |


有任何想法吗?
已邀请:

喜特乐

赞同来自:

SELECT id, name
FROM mytable
WHERE name IN /'B', 'A', 'D', 'E', 'C'/
ORDER BY FIELD/name, 'B', 'A', 'D', 'E', 'C'/


功能 FIELD 在剩余的行列表中返回第一行的位置。

但是,从性能的角度来看,有一个代表您的排序顺序的索引列更好,然后沿此列排序。

龙天

赞同来自:

此处的另一个选择:
http://dev.mysql.com/doc/refma ... .html

select * 
from tablename
order by priority='High' DESC, priority='Medium' DESC, priority='Low" DESC;


所以在你的情况下 /不知所措/ 将


SELECT id, name
FROM mytable
WHERE name IN /'B', 'A', 'D', 'E', 'C'/
ORDER BY name = 'B', name = 'A', name = 'D', name = 'E', name = 'C';


取决于你所做的,我发现它有点奇怪,但总是强迫它在与他一起玩耍后工作。

莫问

赞同来自:

尝试类似的东西


... ORDER BY /CASE NAME WHEN 'B' THEN 0 WHEN 'A' THEN 1 WHEN ...

董宝中

赞同来自:

也许它会帮助某人 /p_CustomerId 由B传播。 SP/:


SELECT CompanyAccountId, CompanyName
FROM account
LEFT JOIN customer where CompanyAccountId = customer.AccountId
GROUP BY CompanyAccountId
ORDER BY CASE WHEN CompanyAccountId IN /SELECT AccountId
FROM customer
WHERE customerid= p_CustomerId/
THEN 0
ELSE 1
END, CompanyName;


描述:我想显示一个帐户列表。 在这里,我在这里传输客户ID sp. 现在它将列出与顶部显示的客户端关联的帐户名称,然后按字母顺序排列其他帐户。

裸奔

赞同来自:

你需要另一列 /数号/ 在您指定排序顺序的表中。 句子 IN 不这样做。


B - 1
A - 2
D - 3
E - 4
C - 5

风见雨下

赞同来自:

刚使用


order by INSTR/ ',B,C,D,A,' , concat/',' , `field`, ',' / /


避免情况


INSTR/'1,2,3,11' ,`field`/


以无序的字符串结果结束: 1 和 11 交替

要回复问题请先登录注册