[英]Selecting from a subquery into a column
假设我有一个名为orders
的表,该表具有一列zip_code
和一个名为provinces
的表。 provinces
具有字段name
, starting_zip
和ending_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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.