mysql - 如何正确使用INSERT INTO SELECT?

标签 mysql

我正在尝试将其他表中的记录插入到 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/

相关文章:

php - 从 PHP 脚本调用的 MySQL 存储过程不返回结果

mysql - 将插入/选择语句合并为一个?数据库

mysql - DBD::mysql::st fetchrow_array 失败:fetch() 没有执行错误?

php - Android 上传多张带有文本数据的图像

mysql - SQL中如何对数据之间的关系进行限制

php - 在mysql中提交多个和单个提交按钮

mysql - 仅当列值低于 100 时才增加

mysql - 优化地理搜索查询

mysql - MySQL中两列的乘法

Mysql:设置列字符集