我有一个简单的问题。 我必须加入多个查询,其中大多数都有广告IN clausole。 不幸的是,MySQL不允许在UNION中使用ORDER BY(仅在所有联盟之外),但我需要一个特定的顺序,我无法通过外部订单获得。
问题是: 如果我有像这样的IN clausole
foo in ('newyork','boston','atlanta')
我可以假设MySql的引擎会将结果行按IN位置排序(所以,首先是foo ='newyork'然后'boston'等所有行...
感谢。
答案 0 :(得分:2)
没有。这不是那样的。您需要显式添加order by子句。
如果您想根据集合中的位置订购行,可以使用field
函数。
order by field(foo,'newyork','boston','atlanta')
答案 1 :(得分:1)
Select *
from
(
Select * from Temp1
order by x
) Tbl1
UNION
Select *
from
(
Select * from Temp2
order by y
) Tbl2
试试这个。