簡體   English   中英

MySQL選擇並匹配兩個表並根據匹配的數據更新列

[英]MySQL select and match two tables and update column based on matched data

這對我來說似乎很難,這就是為什么我需要你的幫助。 所以基本上,我得到了兩個名為xp_pn_resalexp_guru_properties表。 我需要做的是根據另一個表中的數據更新或設置表xp_pn_resalepostal_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 ,它與其他表中的blockstreet_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM