Mysql 这个问题怎么了?

Mysql 这个问题怎么了?,mysql,Mysql,给我一个错误。我做错了什么 555将被一个变量替换。试试看 INSERT INTO product_search_table (id, score) VALUES ( SELECT product_id, 50 FROM cart_product WHERE product_id = 555 ) 选择框周围的括号看起来可疑-值也是如此。尝试: INSERT INTO product_search_table (id, score) SELECT product_id, 50 FROM

给我一个错误。我做错了什么

555将被一个变量替换。

试试看

INSERT INTO 
product_search_table (id, score) 
VALUES (
SELECT product_id, 50 FROM cart_product WHERE product_id = 555
)

选择框周围的括号看起来可疑-值也是如此。尝试:

INSERT INTO 
product_search_table (id, score) 
SELECT product_id, 50 FROM cart_product WHERE product_id = 555
使用:


在INSERT语句中使用SELECT语句时,不能使用VALUES关键字或将SELECT括在括号中。

INSERT…SELECT查询使用的语法不正确

以下是您如何正确地执行此操作:

INSERT INTO product_search_table 
(id, score) 
SELECT product_id, 50 
  FROM cart_product 
 WHERE product_id = 555

更多信息:

似乎是语法问题。值不属于此类型的查询


我猜想子查询可能返回多行(理论上)。那么,如何将多行放入一个字段中呢?您可以尝试确保查询的数据是标量值

(我也不太确定第二个字段/50值)

编辑:在insert语句中使用值。看


edit2:您只选择了第一列的数据,第二列的数据在哪里?

您不能用这些值来选择

例如:

INSERT INTO product_search_table (id, score) 
SELECT product_id, 50 FROM cart_product WHERE product_id = 555

很高兴看到我们都在同一页上。:)在这里,我感到惊讶的是,还没有人回答这个问题…值有时用于插入,但在这种情况下不是。只是为了我心灵的平静:这只是一个最小化的例子吗?因为在这种情况下子查询是完全不必要的。@Bobby我有一个临时表,其中包含一个算法的搜索结果。该算法不会检查产品id是否与搜索词匹配。因此,使用上面的代码,如果搜索查询是产品的产品id,它将插入带有原始表中产品的临时表;具有较高的相关性分数。如果这有道理的话。
INSERT INTO product_search_table (id, score) 
SELECT product_id, 50 FROM cart_product WHERE product_id = 555
INSERT INTO 
 product_search_table (id, score) 
SELECT product_id,50 FROM cart_product WHERE product_id = 555