我有2个mysql
表格,名为 tbl_flats 和 tbl_blocks 。
我正在加入这两个表:
select
`f`.`fld_id` AS `fld_flat_id`,
`b`.`fld_block_name`,
`f`.`fld_mobile_app_password`,
`f`.`fld_site_id`
from
`tbl_blocks` `b`
left join
`tbl_flats` `f` ON (`f`.`fld_block_id` = `b`.`fld_id`)
where
`f`.`fld_site_id` = 57
它显示如下:
现在我要做的是将fld_mobile_app_password
列更新为 NULL 。这是我尝试但失败的原因:
update (select
`f`.`fld_id` AS `fld_flat_id`,
`b`.`fld_block_name`,
`f`.`fld_mobile_app_password`,
`f`.`fld_site_id`
from
`tbl_blocks` `b`
left join
`tbl_flats` `f` ON (`f`.`fld_block_id` = `b`.`fld_id`) )
set
`f`.`fld_mobile_app_password` = '1a1dc91c907325c69271ddf0c944bc72'
where
`f`.`fld_site_id` = 57
我似乎无法弄清楚问题所在。任何提示都是适当的
答案 0 :(得分:3)
您无法更新MySQL中子查询中的列。只需删除子查询:
update `tbl_blocks` `b` join
`tbl_flats` `f`
on `f`.`fld_block_id` = `b`.`fld_id`
set `f`.`fld_mobile_app_password` = '1a1dc91c907325c69271ddf0c944bc72'
where `f`.`fld_site_id` = 57;
内连接在这里应该足够了 - where
子句无论如何都将外连接转换为内连接。