2011-09-20 48 views
0

我已经查询不被mysql命令由不包括0

(SELECT * FROM products WHERE ParentID=139 AND `Position`!=0 AND 
     (
     (69.1 * (lattitude- 53.84787)) * 
     (69.1 * (lattitude- 53.84787)) 
     ) + (
     (69.1 * (longitude- (-1.77684)) * COS(53.84787/57.3)) * 
     (69.1 * (longitude- (-1.77684)) * COS(53.84787/57.3)) 
     ) < POW(5, 2) ORDER BY `Position` ASC) 

     UNION 

     (SELECT * FROM products WHERE ParentID=139 AND `Position`=0 AND 
     (
     (69.1 * (lattitude- 53.84787)) * 
     (69.1 * (lattitude- 53.84787)) 
     ) + (
     (69.1 * (longitude- (-1.77684)) * COS(53.84787/57.3)) * 
     (69.1 * (longitude- (-1.77684)) * COS(53.84787/57.3)) 
     ) < POW(5, 2) ORDER BY 
     ((
       (69.1 * (lattitude- 53.84787)) * 
       (69.1 * (lattitude- 53.84787)) 
     ) + (
     (69.1 * (longitude- (-1.77684)) * COS(53.84787/57.3)) * 
     (69.1 * (longitude- (-1.77684)) * COS(53.84787/57.3)) 
     )),`Position` ASC)  

工作秩序这不是给我的位置结果的顺序。
我想,首先所有的结果应该与位置!= 0,然后所有0位置记录。

+0

目前是否结果订购? –

+0

如果你自己调用它们,而没有'UNION',两个查询是否会产生正确的排序顺序? – Spudley

+0

在查询结尾添加'ORDER BY Position = 0'。 – Karolis

回答

1

在中间查询或子查询中使用ORDER BY子句没有意义。 MySQL不会在最后的结果集上保留这样的顺序。