这个查询有什么问题?

时间:2010-07-14 21:28:32

标签: mysql

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

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

555将被变量替换。

7 个答案:

答案 0 :(得分:7)

您使用的INSERT ... SELECT查询语法不正确。

以下是你如何正确地做到这一点:

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

更多信息:MySQL 5.1 Reference: INSERT..SELECT Syntax

答案 1 :(得分:5)

尝试

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

答案 2 :(得分:4)

似乎是一个语法问题。 VALUES不属于此类查询。

http://dev.mysql.com/doc/refman/5.0/en/insert-select.html

答案 3 :(得分:1)

选择外观周围的括号可疑 - 与VALUES一样。尝试:

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

答案 4 :(得分:1)

使用:

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

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

答案 5 :(得分:1)

你无法用VALUES做到这一点。

例如:

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

答案 6 :(得分:-1)

我的猜测是子查询可以返回多行(理论上)。那么多行如何适合单个字段呢?您可以尝试确保查询的数据是标量值。

(我对第二场/ 50值也不太确定。)

编辑:VALUES用于插入语句人员。见this page

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