我有这个查询:

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/

10-11 08:05