[英]MySQL select and match two tables and update column based on matched data
這對我來說似乎很難,這就是為什么我需要你的幫助。 所以基本上,我得到了兩個名為xp_pn_resale
和xp_guru_properties
表。 我需要做的是根據另一個表中的數據更新或設置表xp_pn_resale
的postal_code
列。 所以這是我的桌子
我的 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
的虛擬列。 該列的值是我想從xp_pn_resale
表中填寫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
這對我來說很乏味。 有誰知道我如何根據我顯示的查詢自動更新它? 將獲得幫助。
編輯:我寫了一個這樣的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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.