2017-02-09 45 views
0

我有一个简单的问题。 我必须加入多个查询,其中大部分都有广告IN clausole。 不幸的是,MySQL不允许在UNION中使用ORDER BY(只在所有的union之外),但我需要一个特定的命令,我不能通过外部命令获得。Mysql - 在IN中排序Clausole

的问题是: 如果我有一个在clausole像

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

我可以假设MySQL的引擎将命令由位置(所以,首先是与富=“纽约”行生成的行那么“波士顿”等......

感谢。

回答

2

不行,这一点也不像。你需要通过条款明确添加的命令。

如果哟你想根据一个集合中的位置来排序你的行,你可以使用field函数。

order by field(foo,'newyork','boston','atlanta') 
+0

谢谢。不幸地,现场秩序在联盟内部不可用,但是是一个很好的解决方案。我将在程序代码中合并外部查询。 – MrMime

1
Select * 
from 
(
    Select * from Temp1 
    order by x 
) Tbl1 
UNION 
Select * 
from 
(
    Select * from Temp2 
    order by y 
) Tbl2 

试试这个。