我想更新一個表的行與另一個表的內容兩行。有沒有更有效的方法,而不是用2個別名鎖定表(new_data AS x & y
)。有沒有更高效的方法這樣做
SET AUTOCOMMIT=0;
START TRANSACTION;
LOCK TABLES
1_products_speech WRITE,
new_data as x WRITE,
new_data as y WRITE;
UPDATE 1_products_speech
SET
v1 = (SELECT
data_blob
FROM
new_data as x
WHERE
id = 1),
v2 = (SELECT
data_blob
FROM
new_data as y
WHERE
id = 2)
WHERE
fk_products_id = 1890;
COMMIT;
UNLOCK TABLES;
甚至爲什麼甚至別名 – Drew
如果我嘗試在兩個嵌套選擇上使用相同的別名,那麼我得到錯誤代碼:1100.表'x'沒有鎖定LOCK TABLES –
我的意思是,很高興看到波希米亞人在下面寫道,但正如你寫的那樣,如果你根本沒有別名,那麼這些巢穴就會彼此孤立,並且只會對new_data產生一個鎖定? – Drew