【发布时间】:2021-05-04 11:42:44
【问题描述】:
您能帮我优化以下查询吗?我不喜欢我多次拨打ST_Covers 的事实。我已经搜索了整个 StackOverflow,但我完全被难住了。任何帮助表示赞赏。谢谢。
如果我尝试选择多个列,我会得到:subquery must return only one column。这就是为什么我将它们分成 3 个不同的选择语句
SELECT
*,
(SELECT id as city_id FROM cities WHERE ST_Covers(boundary, location))
(SELECT name as city_name FROM cities WHERE ST_Covers(boundary, location)),
(SELECT rent_fee FROM cities WHERE ST_Covers(boundary, location))
FROM cars
我的表格如下所示:
汽车
- 身份证
- 位置
- vin
- 制造商
城市
- 身份证
- 姓名
- 边界
- 租费
想要的输出:
- 身份证
- 位置
- vin
- 制造商
- city_id
- 城市名称
- 租费
附: cars 和 cities 表之间没有关系,我想保持这种关系。
【问题讨论】:
-
请同时提供示例数据和所需的输出。
-
使用
JOIN而不是子查询。 -
哪些列属于哪个表?
-
你不能在一行中执行“从城市中选择 foo、bar、baz”吗?
-
没有@kometen。我明白了
subquery must return only one column
标签: sql postgresql optimization postgis