簡體   English   中英

如何使用多表語法更新?

[英]How to update with multiple-table syntax?

如何使用SELECT的結果來確定后續UPDATE更改的字段。 (在復合語句中有效鏈接SELECT后跟UPDATE)。

這是我在SQL中嘗試做的事情:

SELECT id_of_record_in_table_B 
FROM table_A 
WHERE table_A.id_of_record_in_table_B = 36;

UPDATE table_B SET string_field = 'UPPERCASE' 
WHERE BINARY table_B.string_field LIKE '%lowercase' 
AND table_B.id = id_of_record_in_table_B --from the SELECT above)

區分大小寫的匹配與問題無關,但我已將其包含在內,因為它實際上是我需要做的。 我試圖解決的問題是如何將從SELECT返回的值“傳遞”到UPDATE

你可以在同一個查詢中使用它

UPDATE table_B SET string_field = 'UPPERCASE' 
WHERE BINARY table_B.string_field LIKE '%lowercase' 
AND table_b.id = (SELECT id_of_record_in_table_B 
                  FROM table_A 
                  WHERE table_A.id_of_record_in_table_B = 36)

這可以稱為update with multi table語法update with multi table從而避免使用子查詢。 此語法的唯一問題是您不能使用order by和limit子句

 UPDATE table_B as tb,table_A as ta 
 SET tb.string_field = 'UPPERCASE'  

 WHERE BINARY tb.string_field LIKE '%lowercase' 
 AND tb.id = id_of_record_in_table_B
 AND tA.id_of_record_in_table_B = 36

您可以使用嵌套的select語句。

UPDATE table_B SET string_field = 'UPPERCASE' 
WHERE BINARY table_B.string_field LIKE '%lowercase' 
AND table_B.id IN (SELECT id_of_record_in_table_B 
                   FROM table_A 
                   WHERE table_A.id_of_record_in_table_B = 36);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM