我根据从OCR扫描中提取的名称池来提取ID列表。列表结果很好,但不是多个OR的顺序。 MySQL的...
SELECT sid FROM students WHERE name ='Leah' OR name = 'Sowaka'
...(为简洁而截断)结果是44和9,即使'leah'是'9'。对此有什么简单的解决方案
如果您希望结果按名称排序:
SELECT sid FROM students WHERE name ='Leah' OR name = 'Sowaka' order by name
如果您希望它们按照它们在OR
s中的显示进行排序:
SELECT sid FROM students WHERE name ='Leah' OR name = 'Sowaka'
order by
case name
when 'Leah' then 1
when 'Sowaka' then 2
.....................
end
另一种方法是使用UNION ALL
s创建派生表,其中包含名称和序数。然后内连接该表并按顺序排序。
SELECT s.sid
FROM students s
INNER JOIN (SELECT 1 ordinal,
'Leah' name
UNION ALL
SELECT 2 ordinal,
'Sowoka' name
...) x
ON x.name = s.name
ORDER BY x.ordinal;