Php 按AS变量的SQL顺序

Php 按AS变量的SQL顺序,php,sql,sql-order-by,Php,Sql,Sql Order By,我有一个类似这样的sql查询: SELECT ..... price ..... AS distance ORDER BY case ... 我的问题是,如何使用计算的距离作为排序元素?在order by子句中使用相同的距离定义: 我不清楚问题中的距离有多远,也不清楚你为什么把这个案子放在oeder by 通常,您可以在select子句中通过其别名或编号来提及ORDER BY子句中的字段。你也可以把一些逻辑整理好 select A, B as MyB,

我有一个类似这样的sql查询:

SELECT

.....
price

..... AS distance

ORDER BY case
  ...

我的问题是,如何使用计算的距离作为排序元素?

在order by子句中使用相同的距离定义:


我不清楚问题中的距离有多远,也不清楚你为什么把这个案子放在oeder by

通常,您可以在select子句中通过其别名或编号来提及ORDER BY子句中的字段。你也可以把一些逻辑整理好

  select A,
         B as MyB,
         C - Z, -- <- Field #3: (A - #1, B - #2, C - Z - #3, D + F + G - #4 etc)
         D + F + G
    from MyTable
order by MyB asc,       -- <- by alias
         3 desc,        -- <- by field's number
         D + F + G asc, -- <- by some logic, here it's just copy + paste
         case           -- <- by some logic designed for ORDER BY only
           when (A > B + C) then
             1
           when (A > B)  then
             2
           else    
             3
         end desc

你所说的计算距离是什么意思?不知道我是否理解。好像我选择的价格是对的?然后从gps和shop-lat开始,我计算每个项目与客户的距离,然后我想先按距离对产品进行排序,然后product Price distance是产品与设备的距离,我需要case子句,因为我有一些条件,Kiss:最后一个问题,如果我想将我的查询分段。。。?有没有像每2公里递增一次这样的想法…@kangoroo:对不起,你说的分段查询是什么意思?你能举个例子吗?你是说联合/全体联合?如果是,您可以使用除别名以外的所有order by选项:您只能在第一次查询中提及字段的别名,该查询位于第一个union/union all.hmm之前,好的,例如,在每2km距离段内按价格排序,这有意义吗?类似这样的事情?我是否应该将距离除以2000以找出相应的段号?在这种情况下,按castdistance/2000排序为小数点20,0 asc,-间隔0表示0..1999,间隔1表示2000..3999等价格asc
select * from
(
select
...
price
... as distance
...
) x
order by x.distance
  select A,
         B as MyB,
         C - Z, -- <- Field #3: (A - #1, B - #2, C - Z - #3, D + F + G - #4 etc)
         D + F + G
    from MyTable
order by MyB asc,       -- <- by alias
         3 desc,        -- <- by field's number
         D + F + G asc, -- <- by some logic, here it's just copy + paste
         case           -- <- by some logic designed for ORDER BY only
           when (A > B + C) then
             1
           when (A > B)  then
             2
           else    
             3
         end desc