gpt4 book ai didi

mysql - 从子查询中选择列

转载 作者:行者123 更新时间:2023-11-29 18:59:28 25 4
gpt4 key购买 nike

假设我有一个名为 orders 的表,其中包含 zip_code 列和一个名为 provinces 的表。 provinces 具有字段 namestarting_zipending_zip(表示起始 zip 和结束 zip 之间的所有邮政编码属于到本省)。

我需要选择数千个订单并包含它们要运送到的省份的名称。我尝试过这样的事情:

SELECT orders.*, p.name
FROM orders, (SELECT name FROM provinces
WHERE order.zip_code >= provinces.starting_zip
AND order.zip_code <= provinces.ending_zip LIMIT 1) p
WHERE...

我也尝试过:

SELECT orders.*, p.name
FROM orders
JOIN (SELECT name FROM provinces
WHERE order.zip_code >= provinces.starting_zip
AND order.zip_code <= provinces.ending_zip LIMIT 1) p
WHERE...

另外:

SELECT orders.*, (SELECT name FROM provinces 
WHERE order.zip_code >= provinces.starting_zip
AND order.zip_code <= provinces.ending_zip LIMIT 1) as name
FROM orders
WHERE...

无论我做什么,我都会收到如下错误:

"Unknown column 'order.zip_code' in 'where clause'

子选择没有范围来访问主选择的信息是有道理的,但是知道如何让它工作吗?

最佳答案

你为什么不这样做呢?

SELECT orders.*, 
(
SELECT name
FROM provinces
WHERE orders.zip_code >= provinces.starting_zip
AND orders.zip_code <= provinces.ending_zip
LIMIT 1
) as name
FROM orders
WHERE...

我真的不明白为什么这应该出现在 FROM 语句中。无论如何,您只选择名称列

更新

您看到我在子查询中更改了表名称吗? FROM 语句如下所示:

FROM orders

但是 WHERE 子句如下所示:

WHERE order.zip_code >= provinces.starting_zip 
AND order.zip_code <= provinces.ending_zip

我已在查询中将其更改为:

WHERE orders.zip_code >= provinces.starting_zip 
AND orders.zip_code <= provinces.ending_zip

关于mysql - 从子查询中选择列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43974615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com