相关疑难解决方法(0)

CTE和SubQuery之间的区别?

从这篇文章如何在以下过程中使用ROW_NUMBER?

有两个版本的答案,其中一个使用a SubQuery,另一个使用a CTE来解决相同的问题.

那么,使用CTE (Common Table Expression)over as 的优点是什么ub-query(因此,查询实际上更具可读性)

使用CTEover sub select 的唯一优点是我可以实际命名子查询.当CTE用作简单(非递归)CTE时,这两者之间是否存在其他差异

sql t-sql sql-server subquery common-table-expression

135
推荐指数
7
解决办法
7万
查看次数

MySQL"WITH"子句

我正在尝试使用MySQL创建一个带有"WITH"子句的视图

WITH authorRating(aname, rating) AS
   SELECT aname, AVG(quantity)
   FROM book
   GROUP BY aname
Run Code Online (Sandbox Code Playgroud)

但似乎MySQL并不支持这一点.

我认为这是非常标准的,我确信Oracle支持这一点.反正强制MySQL使用"WITH"子句吗?我用MyISAM和innoDB引擎试过了.这两个都不起作用.

mysql sql common-table-expression

89
推荐指数
5
解决办法
18万
查看次数

用于查找表中最长名称和最短名称的SQL查询

我有一个表,其中一列是varchar(city)类型.并希望找到该列中存储的最长和最短值.

select a.city, a.city_length from (select city, char_length(city) city_length 
from station order by city, city_length) a
where a.city_length = (select min(a.city_length) from a) or
      a.city_length = (select max(a.city_length) from a)
group by a.city_length;
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?谢谢


一个解决方案

select * from (select city, char_length(city) city_length from station order by city, city_length) a group by a.city_length order by a.city_length limit 1;
select * from (select city, char_length(city) city_length from station order by city, city_length) a group by a.city_length order by a.city_length desc limit 1;
Run Code Online (Sandbox Code Playgroud)

sql

13
推荐指数
5
解决办法
6万
查看次数

如何提高计算hasrsine公式的查询性能?

给出一个有纬度和经度的位置表,哪些位置最接近给定位置?

当然,在地球表面找到距离意味着使用大圆距离,用Haversine公式计算,也称为球面余弦定律公式.

我有以下代码:

 SELECT zip, latitude, longitude, distance
 FROM (
  SELECT z.zip,
         z.latitude, z.longitude,
         p.radius,
         p.distance_unit
             * DEGREES(ACOS(COS(RADIANS(p.latpoint))
             * COS(RADIANS(z.latitude))
             * COS(RADIANS(p.longpoint - z.longitude))
             + SIN(RADIANS(p.latpoint))
             * SIN(RADIANS(z.latitude)))) AS distance
  FROM zip AS z
   JOIN (   /* these are the query parameters */
    SELECT  42.81 AS latpoint, -70.81 AS longpoint,
            50.0  AS radius,  111.045 AS distance_unit
        ) AS p ON 1=1
  WHERE z.latitude
    BETWEEN p.latpoint  - (p.radius / p.distance_unit)
        AND p.latpoint  + (p.radius / p.distance_unit)
   AND z.longitude
    BETWEEN p.longpoint - …
Run Code Online (Sandbox Code Playgroud)

gis postgresql performance location

8
推荐指数
2
解决办法
675
查看次数