我試圖更新表amga
中的一行,表amgb
只有一行加入了它們的itemTempId
。MySql將更新與內部連接相結合並限制
我的問題是,表amgb
表可能有多達6行,我需要使用它從更新中只有一個。
我很熟悉使用連接進行更新,但是當我添加一個限制(以便只獲得一行)時,我收到錯誤消息Incorrect usage of update and limit
。我讀到這是不可能的,但是會有另外一種方法來做到這一點嗎?
阿姆加
"id" "itemId" "itemTempId" "itemImageName" "itemName" "itemCountry" "userId"
"1" "US1" "T001" \N "Samsung Galaxy Note 5" "US" "1"
"2" "CA2" "T002" \N "Samsung Galaxy Note 6" "CA" "2"
"3" "UK3" "T003" \N "Samsung Galaxy Note 7" "UK" "3"
amgb
"id" "itemId" "itemTempId" "itemImageName" "userId"
"1" "US1" "T001" "front.jpg" "1"
"2" "US1" "T001" "side-left.jpg" "1"
"3" "US1" "T001" "side-right.jpg" "1"
"4" "US1" "T001" "back.jpg" "1"
"5" "CA2" "T002" "front.jpg" "2"
"6" "CA2" "T002" "side-left.jpg" "2"
"7" "CA2" "T002" "side-right.jpg" "2"
"8" "CA2" "T002" "back.jpg" "2"
"9" "UK3" "T003" "front.jpg" "3"
的Sql我用
update amga a inner join amgb b on a.itemTempId = b.itemTempId
set a.itemImageName = b.itemImageName where a.itemTempId = 'T001' limit 1;
EXPEC泰德結果:表阿姆加更新後
"id" "itemId" "itemTempId" "itemImageName" "itemName" "itemCountry" "userId"
"1" "US1" "T001" front.jpg "Samsung Galaxy Note 5" "US" "1"
"2" "CA2" "T002" \N "Samsung Galaxy Note 6" "CA" "2"
"3" "UK3" "T003" \N "Samsung Galaxy Note 7" "UK" "3"
注:itemTempId
與front.jpg
更新,這是amgb
的第一行itemTempId = T001
任何幫助表示讚賞。
更新 我注意到它的工作原理,如果我刪除的限制,它也會更新。但是這是否正確嗎? MySql對select中的其他行有什麼作用?
update amga a inner join amgb b on a.itemTempId = b.itemTempId
set a.itemImageName = b.itemImageName where a.itemTempId = 'T001';
加入時你是如何定義「第一排」?我想這不是一個隨機的行,它是最低ID的行嗎? (因爲表中沒有行的保證順序) – Josien 2014-09-11 06:11:59
第一個/最高的一個。在這種情況下,它將是'1' – Norman 2014-09-11 06:12:46
而對於'T002'(如果在更新中使用了「T002」)它將是'5' – Norman 2014-09-11 06:14:47