Php 按AS变量的SQL顺序
我有一个类似这样的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,
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