mysql R中的SQL:在行级别上具有数字条件的子查询

icnyk63a  于 2022-11-28  发布在  Mysql
关注(0)|答案(1)|浏览(118)

我正在R中学习sql。我有一个包含城市名称和城市经度数据的数据库。我想选择距离巴黎和柏林之间经度半圈小于0.2经度的所有城市。
我基本上是在努力做到:“选择所有城市和经度
1.柏林和(柏林+0.2)之间,以及
1.巴黎和(巴黎- 0.2)之间”

sql7 = "SELECT Name, Longitude FROM city
WHERE Longitude IN (SELECT Name, Longitude FROM city WHERE Longitude BETWEEN (SELECT Longitude FROM city WHERE NAME LIKE 'Berlin') 
AND 
(SELECT Longitude FROM city wHERE Name LIKE 'Berlin') + 0.2) 
AND
SELECT Name, Longitude FROM city
WHERE Longitude IN (SELECT Name, Longitude FROM city WHERE Longitude BETWEEN (SELECT Longitude FROM city WHERE NAME LIKE 'Paris') 
AND 
(SELECT Longitude FROM city wHERE Name LIKE 'Paris') - 0.2)"
result7 = dbSendQuery(con, sql7)
df7 = dbFetch(result7)
df7

我想我需要用子查询来做这件事,但到目前为止这还不起作用。

2ic8powd

2ic8powd1#

没有数据很难测试,但我认为需要从内心选择“姓名”,而不是“姓名、经度”:

SELECT name,
       longitude
FROM city
WHERE name IN
    (SELECT name
     FROM city
     WHERE longitude BETWEEN
         (SELECT longitude
          FROM city
          WHERE name LIKE 'Berlin') AND
         (SELECT longitude
          FROM city
          WHERE name LIKE 'Berlin') + 0.2)
  AND name IN
  SELECT name
  FROM city WHERE longitude IN
    (SELECT name,
            longitude
     FROM city
     WHERE longitude BETWEEN
         (SELECT longitude
          FROM city
          WHERE name LIKE 'Paris') AND
         (SELECT longitude
          FROM city
          WHERE name LIKE 'Paris') - 0.2)

提示:格式化代码以提高可读性:https://sqlformat.org/

相关问题