update left join mysql_mysql update left join on 多表关联更新和where语句
时间: 2023-07-03 14:30:09 浏览: 94
可以使用以下语法来进行多表关联更新和where语句:
```
UPDATE table1
LEFT JOIN table2 ON table1.column1 = table2.column2
SET table1.column3 = value
WHERE condition;
```
其中,`table1` 和 `table2` 是要关联的两个表,`column1` 和 `column2` 是要关联的列,`column3` 是要更新的列,`value` 是要更新的值,`condition` 是要满足的条件。
注意,`LEFT JOIN` 是左连接,它会返回所有 `table1` 中的行,以及在 `table2` 中匹配的行。如果没有匹配的行,则会返回 NULL 值。如果使用其他类型的连接,语法会略有不同。
相关问题
SELECT b.id,b.FURL,wb.id,wb.pattern_url FROM yango_wb.`wb_dynamic_form` wb LEFT JOIN yango_common.`file_info` b on wb.pattern_url = b.furl where wb.pattern_url is not null and b.id is not null 将上面这段sql语句查出来的数据 b.id 的参数赋值到yango_wb.`wb_dynamic_form` 这个表里面的pattern_url字段,并且当wb.pattern_url和yango_wb.`wb_dynamic_form` 表里面的pattern_url字段相同时,将b.id的参数进行更新到表里面,使用mysql update语句
可以使用如下的MySQL Update语句进行操作:
```
UPDATE yango_wb.`wb_dynamic_form` wb
INNER JOIN yango_common.`file_info` b ON wb.pattern_url = b.furl
SET wb.pattern_url = b.id
WHERE wb.pattern_url IS NOT NULL AND b.id IS NOT NULL;
```
这个更新语句会将 yango_wb.`wb_dynamic_form` 的 pattern_url 字段的值替换为 yango_common.`file_info` 表中的对应的 b.id 值。如果两个表的 pattern_url 字段相同时,就会将 yango_wb.`wb_dynamic_form` 表中对应行的 pattern_url 字段更新为 b.id 的值。
帮忙翻译sql injection violation, dbType mysql, , druid-version 1.2.9, syntax error: syntax error, error in :'in order by tl.top_id desc ,tc.create_t', expect ), actual BY, pos 847, line 51, column 12, token BY : select count(0) from (select tld.dispatch_list_num, tl.top_id, bl.id as bom_id, bl.bom_version, tc.id, tc.task_list_details_id, tc.task_name, tc.pn_code, tc.product_type, tc.details, tc.check_type, tc.check_num, tc.stock_num, tc.check_user_id, tc.check_user_name, tc.producer_id, tc.producer_name, tc.company_id, tc.`delete`, tc.create_time, tc.update_time, tc.product_name, tc.total_num from task_check tc left join task_list_details tld on tld.id=tc.task_list_details_id left join bom_list bl on bl.id=tld.bom_id left join task_list tl on tl.id=tld.task_list_id where tc.`delete` = 0 and tld.company_id = ? and tld.top_id in order by tl.top_id desc ,tc.create_time desc) tmp_count;
SQL注入违规,数据库类型为MySQL,Druid版本为1.2.9,语法错误:语法错误,错误在于:'in order by tl.top_id desc, tc.create_t',期望为“)”,实际为“BY”,位置在第847个字符,第51行,第12列,关键字为BY。查询语句如下:
select count(0) from (select tld.dispatch_list_num, tl.top_id, bl.id as bom_id, bl.bom_version, tc.id, tc.task_list_details_id, tc.task_name, tc.pn_code, tc.product_type, tc.details, tc.check_type, tc.check_num, tc.stock_num, tc.check_user_id, tc.check_user_name, tc.producer_id, tc.producer_name, tc.company_id, tc.`delete`, tc.create_time, tc.update_time, tc.product_name, tc.total_num from task_check tc left join task_list_details tld on tld.id=tc.task_list_details_id left join bom_list bl on bl.id=tld.bom_id left join task_list tl on tl.id=tld.task_list_id where tc.`delete` = 0 and tld.company_id = ? and tld.top_id in order by tl.top_id desc, tc.create_time desc) tmp_count;
阅读全文