mysql - MySQL选择并匹配两个表并根据匹配的数据更新列
问题描述
这对我来说似乎很难,这就是为什么我需要你的帮助。所以基本上,我有两个名为xp_pn_resale
and的表xp_guru_properties
。我需要做的是根据另一个表中的数据更新或设置postal_code
表中的列。xp_pn_resale
所以这是我的桌子
我的 xp_pn_resale 表,我写了这样的查询,以便向您展示
SELECT postal_code,
block,
concat(block,' ', street_name) as address
FROM xp_pn_resale
where street_name like '%ANG MO KIO%';
我得到这样的结果
如您所见,那里有null
值,也有一些postal_code
值,因为我根据搜索的内容手动更新它们。我只想自动填充postal_code
从其他表获得的查询。
这是我的 xp_guru_properties 表,我写了这样的查询,以便向您展示
SELECT property_name as GURU_PROEPRTY_NAME,
property_type as GURU_PROPERTY_TYPE ,
JSON_UNQUOTE(JSON_EXTRACT(xp_guru_properties.json, '$.postcode') )as GURU_POSTCODE
FROM xp_guru_properties
where property_type like '%HDB%' AND property_name like '%ang mo kio%';
结果是这样的
xp_guru_properties
在我将其property_type
命名为 .block
street_name
GURU_PROPERTY_NAME
如您所见,有一个名为 的虚拟列GURU_POSCODE
。该列的值是我postal_code
要从表中填写的列xp_pn_resale
。我是手动更新postal_code
的
UPDATE xp_pn_resale
SET postal_code = 560110
WHERE street_name LIKE '%ANG MO KIO%'
AND block = 110
这对我来说很乏味。有谁知道我如何根据我显示的查询自动更新它?帮助将被appriciated。
编辑:我写了一个JOIN
这样的查询,但这是Lingkong Tiga
我手动填写所有记录的记录postal_code
select distinct
JSON_UNQUOTE(json_extract(g.json, '$.postcode')) postcode,
JSON_UNQUOTE(json_extract(g.json, '$.name')) name,
JSON_UNQUOTE(json_extract(g.json, '$.streetnumber') )streetnumber,
p.block, p.street_name, p.postal_code
from xp_pn_resale p
inner join xp_guru_properties g
on g.property_name = concat(p.block, ' ', p.street_name)
where g.property_type like '%HDB%' AND g.property_name like '%Lengkong Tiga%'
解决方案
加入两个表并更新。
UPDATE xp_pn_resale AS r
JOIN xp_guru_properties AS p ON concat(r.block,' ', r.street_name) = p.property_name
SET r.postal_code = JSON_UNQUOTE(JSON_EXTRACT(xp_guru_properties.json, '$.postcode') )
WHERE r.street_name like '%ANG MO KIO%'
AND p.property_type like '%HDB%' AND p.property_name like '%ang mo kio%'
AND r.postal_code IS NULL
推荐阅读
- r - R:根据另一个表替换一个表中的值
- php - 我想制作一个搜索表单,我可以在其中专门搜索与 Symfony 5 上的另一个实体具有空关系的实体
- python - 将列表转换为字典
- python-3.x - 根据特定列中行值的数据类型拆分熊猫数据框
- python - ActiveModel::UnknownAttributeError: WorkOrder 的未知属性“”
- java - 如何使用 http4k 验证请求来自 Google Cloud Platform 上的 Twilio?
- oauth-2.0 - 如何为 Power BI 正确构建 Clio Power Query 自定义连接器?
- http - 如何获取 git_remote_connect() http 响应代码
- android - 谷歌地图完整地址在android studio中显示为null,null,null,null
- html - 使用 nodejs 将 html 表单转换为 axios 请求