mysql - 将值从 B 表插入到在 mysql 中不重复的 A 表中
问题描述
我有 2 张桌子 A,B
表 A
user_login user_email display_name
--------------------------------------------------
btv1 btv1@chodoixe.com Bien tap vien 1
btv2 btv2@chodoixe.com Bien tap vien 2
表 B
meta_id post_id meta_key meta_value
-------------------------------------------
83758 18181 user-id 108538 <---- insert to user_login, user_email
83759 18181 user-fullname nguyen dang <---- insert to display_name
83760 18181 user-phone 329420797
83761 18181 car-firm vinfast
83762 18181 car-model lux-a20
88974 18782 user-id 24561 <---- insert to user_login, user_email
88975 18782 user-fullname a hoc <---- insert to display_name
88976 18782 user-phone 943902211
88977 18782 car-firm kia
88978 18782 car-model morning
我想将表 B 的 user-id 的 meta_value、post_id='18181'、'18782' 的 user-fullname 插入表 A 的 user_login、user_email、display_name
我下面的查询返回超过 100,000 个插入的行。但是用户表中大约有 1,300 行必须插入 postmeta 表
INSERT INTO users(
user_login,
user_email,
display_name
)
select a.meta_value, b.meta_value, c.meta_value from
(
SELECT
meta_value
FROM
`postmeta`
WHERE
`meta_key` = 'user-id' AND post_id < 5500
) a,
(
SELECT
meta_value
FROM
`postmeta`
WHERE
`meta_key` = 'user-id' AND post_id < 5500
) b,
(
SELECT
meta_value
FROM
`postmeta`
WHERE
`meta_key` = 'user-fullname' AND post_id < 5500
) c
where not exists (select d.user_login, d.user_email, d.display_name from users d where d.user_login=a.meta_value)
请给我真正的查询
太感谢了 !!!
解决方案
您可以简单地Table B
在相同post_id
和meta_key
等于上连接自身,然后在右连接表等于user-fullname
的地方过滤选择meta_key
user-id
INSERT INTO `Table A` (`user_login`, `user_email`, `display_name`)
SELECT
`UserIds`.`meta_value` AS `user_login`,
`UserIds`.`meta_value` AS `user_email`,
`UserFullNames`.`meta_value` AS `display_name`
FROM `Table B` AS `UserIds`
INNER JOIN `Table B` AS `UserFullNames`
ON `UserFullNames`.`post_id` = `UserIds`.`post_id`
AND `UserFullNames`.`meta_key` = 'user-fullname'
WHERE `UserIds`.`meta_key` = 'user-id'
推荐阅读
- text - 在 Weka 中将文本转换为 .arff 的问题
- java - java process finishes after some time with no particular reason
- css - How to correctly reference .css file from handlebars while making /public/css and /public/img folders static?
- excel - 工作表函数 Sum-if 导致错误类型不匹配
- docusignapi - What is the DocuSign rest api endpoint that mimics Share to Folder action for templates?
- java - How to throw Spring @Valid "exception"?
- mysql - mySQL Left outer join not selecting possible all data
- python - 当一个(或多个)值未知/通配符时计算出列表的排列数量
- r - 如何更改 MendelianRandomization 函数中的内部函数以更改输出中的小数位?
- javascript - d3.js - 使用 .selectAll() 根据属性值选择节点元素