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