Welcome to JiKe DevOps Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
179 views
in Technique[技术] by (71.8m points)

SQL中ROUND的返回值如何当WHERE条件

SELECT
    *,
    ROUND(
        6378138 * 2 * ASIN(
            SQRT(
                POW(
                    SIN(
                        (
                            40.0497810000 * PI() / 180 - latitude * PI() / 180
                        ) / 2
                    ),
                    2
                ) + COS(40.0497810000 * PI() / 180) * COS(latitude * PI() / 180) * POW(
                    SIN(
                        (
                            116.3424590000 * PI() / 180 - longitude * PI() / 180
                        ) / 2
                    ),
                    2
                )
            )
        )
    ) AS juli
FROM
    table
WHERE 
    tiaojian <> 0
ORDER BY
    juli ASC
LIMIT 0 , 1

当前语句如上,但是还想将juli也当where条件,不知道该如何写才好,新手求指教~谢谢


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

Please log in or register to answer this question.

1 Answer

0 votes
by (71.8m points)

似乎只能再写一遍。实在不想的话可以子查询,但效率会下降, 如:

SELECT cityname,
       juli
FROM
  (SELECT cityname,
          ROUND(6378138 * 2 * ASIN(SQRT(POW(SIN((40.0497810000 * PI() / 180 - latitude * PI() / 180) / 2), 2) + COS(40.0497810000 * PI() / 180) * COS(latitude * PI() / 180) * POW(SIN((116.3424590000 * PI() / 180 - longitude * PI() / 180) / 2), 2)))) AS juli
   FROM eath) AS t
WHERE t.juli > 0
ORDER BY t.juli ASC

这里有在线演示,欢迎尝试:
https://bixuebihui.com/sql/inner_select.html


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to JiKe DevOps Community for programmer and developer-Open, Learning and Share

755k questions

754k answers

5 comments

53.3k users

...