我有这个查询:
SELECT stopName
, stopId
FROM Stations
WHERE stopId IN ( 2845, 1380, 1433, 1434
, 2965, 2966, 2676, 2322
, 2323, 1405, 2845)
ORDER
BY FIELD( stopId, 2845, 1380, 1433, 1434
, 2965, 2966, 2676, 2322
, 2323, 1405, 2845);
将stopId 2845重复两次,使用此查询,我只会得到第一行2845。有没有办法以此顺序多次获得同一行?
最佳答案
IN
运算符不生成记录;它是一个逻辑运算符,可让您过滤表的内容。
一种解决方案是使用派生表并将其与原始表连接(如果您有大量的值列表,这将很痛苦……):
select s.stopName, s.stopId
from (
select 2845 stopId, 1 seq
union all select select 1380, 2
...
union all select select 2845, 10
) t
inner join stations s on s.stopId = t.stopId
order by t.seq
关于mysql - Mysql ORDER BY FIELD是否有办法多次获得相同的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58859027/