我正在尝试将其他表中的记录插入到 store_orders_items 中。 例如:
INSERT INTO store_orders_items( order_id, sel_item_id, sel_item_price)
SELECT order_id, sel_item_id, sel_item_price
FROM orders_ids
INNER JOIN store_orders ON store_orders.id = orders_ids.order_id
INNER JOIN store_shoppertrack ON store_items.id=store_shoppertrack.sel_item_id
Where session_id = '".$_COOKIE["PHPSESSID"]."';
然后我收到以下消息:“字段列表”中存在未知列“sel_item_price”。我尝试将 sel_item_price 设置为 item_price 无济于事。 这是我的表格:
商店订单项目:
id| order_id | sel_item_id |sel_item_price|
-------------------------------------------
| | | |
store_shoppertrack:
id| session_id | sel_item_id |date_added|
-------------------------------------------
| | | |
商店订单:
id| item_total| order_date|
---------------------------
| | |
商店商品:
id| item_price| item_color|
---------------------------
| | |
订单 ID:
id| order_id | status|
----------------------
| | |
最佳答案
jour 连接中没有表具有名为 sel_item_price
的列,也没有名为 item_price
的列。 INSERT INTO
与此无关,SELECT
本身也会失败。我假设您还想加入 store_items
表,并从该表中选择 item_price
列插入到 sel_item_price
表中store_order_items
。您可以像这样重写 SELECT
:
SELECT order_id, store_shoppertrack.sel_item_id, store_items.item_price AS sel_item_price
FROM orders_ids
INNER JOIN store_orders ON store_orders.id = orders_ids.order_id
INNER JOIN store_items ON store_items.id = store_orders.sel_item_id
INNER JOIN store_shoppertrack ON store_items.id=store_shoppertrack.sel_item_id
Where session_id = 'foo';
AS sel_item_price
是可选的,因为您已经在 INSERT INTO
部分中指定了目标列。但它可能有助于一致性,因为 SELECT 的输出现在将具有与目标表的卷标记相同的卷。它表明您的问题中 AS
的顺序错误,因此您可能会在这里学到一些东西。
我创建了一个 SQL Fiddle用于您的架构和查询。
关于mysql - 如何正确使用INSERT INTO SELECT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12963537/