mysql json链接表_MySQL基于json select查询更新多个表列值

本文介绍如何从JSON格式的数据中提取特定字段,并将其更新到现有数据库表的新列中。面对数据重复的问题,作者分享了解决方案及尝试过的SQL查询。

我刚在数据库中创建了4个名为

cea_no

,

district

,

property_type

listing_type

. 我想将基于select查询的结果插入到我添加的新列中。选择查询结果来自行

json

它是从

json格式

数据。我怎么能做到?我尝试了一些方法,结果成功了,问题是它插入了一个新行,我的数据现在翻了一番。提前谢谢

我的桌子结构。

+------------------+------------+------+-----+---------------------+-------------------------------+

| Field | Type | Null | Key | Default | Extra |

+------------------+------------+------+-----+---------------------+-------------------------------+

| id | int(11) | NO | PRI | NULL | auto_increment |

| json | mediumtext | NO | | NULL | |

| property_name | text | NO | | NULL | |

| property_address | text | NO | | NULL | |

| price | text | NO | | NULL | |

| listed_by | text | NO | | NULL | |

| contact | text | NO | | NULL | |

| cea_no | text | NO | | NULL | EMPTY for now |

| district | text | NO | | NULL | EMPTY for now |

| property_type | text | NO | | NULL | EMPTY for now |

| listing_type | text | NO | | NULL | EMPTY for now |

| update_time | timestamp | NO | | current_timestamp() | on update current_timestamp() |

+------------------+------------+------+-----+---------------------+-------------------------------+

我试过的问题

SELECT JSON_EXTRACT(json, '$.agencyLicense') AS cea_no,

JSON_EXTRACT(json, '$.district') AS district,

JSON_EXTRACT(json, '$.details."Type"') AS property_type,

RIGHT(JSON_EXTRACT(json, '$.details."Type"'),9) AS listing_type

from xp_guru_listings;

正确的样本结果

+------------------------------+----------+------------------------+--------------+

| cea_no | district | property_type | listing_type |

+------------------------------+----------+------------------------+--------------+

| "CEA: R017722B \/ L3009740K" | "(D25)" | "Apartment For Sale" | For Sale" |

| "CEA: R016023J \/ L3009793I" | "(D25)" | "Condominium For Sale" | For Sale" |

| "CEA: R011571E \/ L3002382K" | "(D25)" | "Condominium For Sale" | For Sale" |

| "CEA: R054044J \/ L3010738A" | "(D21)" | "Apartment For Sale" | For Sale" |

| "CEA: R041180B \/ L3009250K" | "(D09)" | "Condominium For Sale" | For Sale" |

+------------------------------+----------+------------------------+--------------+

这是我要在新列中插入的值。

编辑:

我试过这个问题但没用

update xp_guru_listings cross join (

SELECT JSON_EXTRACT(json, '$.agencyLicense') AS cea_no,

JSON_EXTRACT(json, '$.district') AS district,

JSON_EXTRACT(json, '$.details."Type"') AS property_type,

RIGHT(JSON_EXTRACT(json, '$.details."Type"'),9) AS listing_type

from xp_guru_listings

)

set cea_no = cea_no,

district = district,

property_type = property_type,

listing_type = listing_type;

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值