[英]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.