INSERT INTO
product_search_table (id, score)
VALUES (
SELECT product_id, 50 FROM cart_product WHERE product_id = 555
)
给我一个错误。我究竟做错了什么?这个查询有什么问题?
555将被替换为变量。
INSERT INTO
product_search_table (id, score)
VALUES (
SELECT product_id, 50 FROM cart_product WHERE product_id = 555
)
给我一个错误。我究竟做错了什么?这个查询有什么问题?
555将被替换为变量。
您对INSERT ... SELECT查询使用的语法不正确。
这里是你会怎么做正确:
INSERT INTO product_search_table (id, score)
SELECT product_id, 50 FROM cart_product WHERE product_id = 555
很高兴看到我们都在同一页面上。 :) – Faisal 2010-07-14 21:31:49
尝试
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
用途:
INSERT INTO product_search_table
(id, score)
SELECT product_id, 50
FROM cart_product
WHERE product_id = 555
当在INSERT语句中使用SELECT语句,你不要使用VALUES关键字或封闭SELECT在括号中。
似乎是一个语法问题。 VALUES不属于这种类型的查询。
而且,在这里我很惊讶,没有人回答过这个问题... – 2010-07-14 21:32:47
我的猜测是,子查询可以返回多行(理论上)。那么多行怎么可能适合一个领域?您可以尝试确保查询的数据是标量值。
(我对第二场/ 50值也不太确定)。
编辑:VALUES用于插入语句的人。请参阅this page
edit2:您只是选择第一列的数据,第二列的数据在哪里?
VALUES有时用于INSERT,但在这种情况下不适用。 – 2010-07-14 21:36:15
你不能用VALUES做到这一点。
例如:
INSERT INTO
product_search_table (id, score)
SELECT product_id,50 FROM cart_product WHERE product_id = 555
什么错误? – 2010-07-14 21:29:22
只为我的灵魂安宁:这只是一个最小化的例子吗?因为在这种情况下子查询是完全不必要的。 – Bobby 2010-07-15 21:14:06
@Bobby我有一个包含算法搜索结果的临时表。该算法不会检查产品ID是否与搜索条件匹配。因此,使用上面的代码,如果搜索查询是产品的产品ID,它将从原始表中插入带有产品的临时表;具有很高的相关性得分。如果这是有道理的。 – 2010-07-16 00:22:30