2011-09-20 49 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不會在最後的結果集上保留這樣的順序。