2014-02-14 88 views
0

請參閱下面的查詢,我試圖從另一個表似乎有重複更新一個表。MySQL數據庫錯誤:子查詢返回多於一行

運行此聲明的正確方法是什麼?

UPDATE doc SET idx2 = (SELECT imp.idx2 FROM imp WHERE imp.idx1 = doc.idx1), 
idx3 = (SELECT imp.idx3 FROM imp WHERE imp.idx1 = doc.idx1) 
WHERE doc.boxid IN (SELECT box.id FROM box WHERE box.profid = 41 
AND box.boxname = '1153-BATCH0011') AND doc.idx2 = '' 
+0

正確的方法是讓子查詢返回恰好爲1行的錯誤消息。 –

+0

嗨,不太理解。請在我發佈的查詢中顯示我會出錯。 – user3309798

+0

我不知道哪個查詢返回的行數超過1行,這取決於您找出並修復您的查詢模型。 –

回答

0

如果你確信子查詢返回重複相同的值,你可以使用LIMIT 1這樣你的子查詢只會返回1個結果。

UPDATE doc SET idx2 = (SELECT imp.idx2 FROM imp WHERE imp.idx1 = doc.idx1 LIMIT 1), 
idx3 = (SELECT imp.idx3 FROM imp WHERE imp.idx1 = doc.idx1 LIMIT 1) 
WHERE doc.boxid IN (SELECT box.id FROM box WHERE box.profid = 41 
AND box.boxname = '1153-BATCH0011') AND doc.idx2 = '' 
+0

這很好,謝謝你,從來沒有使用限制1功能,將不得不在此研究。謝謝 – user3309798

相關問題