有两个版本的答案,其中一个使用a SubQuery,另一个使用a CTE来解决相同的问题.
那么,使用CTE (Common Table Expression)over as 的优点是什么ub-query(因此,查询实际上更具可读性)
使用CTEover sub select 的唯一优点是我可以实际命名子查询.当CTE用作简单(非递归)CTE时,这两者之间是否存在其他差异?
我正在尝试使用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引擎试过了.这两个都不起作用.
我有一个表,其中一列是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) 给出一个有纬度和经度的位置表,哪些位置最接近给定位置?
当然,在地球表面找到距离意味着使用大圆距离,用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) sql ×3
gis ×1
location ×1
mysql ×1
performance ×1
postgresql ×1
sql-server ×1
subquery ×1
t-sql ×1