Mysql - Order By in IN Clausole



我有一个简单的问题。我必须加入多个查询,其中大多数都有广告。不幸的是,MySQL不允许在联盟中(仅在所有工会之外(进行ORDER BY,但是我需要一个特定的排序,而我无法通过外部订单获得。

问题是:如果我有一个像 IN 幽闭素

foo in ('newyork','boston','atlanta')

我可以假设 MySql 的引擎将按 IN 位置对生成的行进行排序(因此,首先是 foo = 'newyork' 的所有行,然后是 'boston' 等......

谢谢。

No.这完全不是那样的。您需要显式添加顺序依据子句。

如果要根据集合中的位置对行进行排序,可以使用field函数。

order by field(foo,'newyork','boston','atlanta')
Select *
from
(
  Select * from Temp1
  order by x
) Tbl1
UNION
Select *
from
(
  Select * from Temp2
  order by y
) Tbl2

试试这个。

最新更新