【发布时间】:2020-12-04 00:44:38
【问题描述】:
我有 2 个 wordpress 表,我正在尝试使用 SQL 进行合并,其中一个需要旋转才能合并(我认为)。
表1是Wordpress用户(users)表:
标识 |用户登录 |用户邮箱 |其他无关字段。 1 |约翰 |约翰@约翰 | ... 2 |玛丽 |玛丽@玛丽 | ... 3 |埃里克 |埃里克@eric | ……
表2是buddypress xprofile数据(bp_xprofile_data)表:
标识 |用户 ID |字段 ID |价值 1 | 1 | 1 |约翰是个男人。 2 | 3 | 1 |埃里克是个男人。 3 | 1 | 2 |约翰打网球。
我想将两者合并(通过 user_id),这样我就得到了这个结果:
用户 ID |用户登录 |用户邮箱 |字段1 |字段2 | ... 1 |约翰 |约翰@约翰 |约翰是个男人 |约翰打网球 2 |玛丽 |玛丽@玛丽 |空 |空值 3 |埃里克 |埃里克@eric |埃里克是个男人 |空值我正在使用 phpmyadmin 和 mysql 5.6.41-84.1。这是我试图做的——我不太擅长 SQL,所以我以一种非常“手动”的方式做事。我也尝试搜索其他 SO 答案,但 PIVOT 未被识别,其中大多数提供了一些使用 PIVOT 的变体。
试过了:
SELECT D.user_id , U.user_email, U.display_name, U.user_login, (SELECT D.value FROM
bp_xprofile_dataWHERE D.field_id =1) AS self_description, D.value FROMbp_xprofile_dataWHERE D.field_id =2) 作为运动 FROMbp_xprofile_dataD JOINusersU ON U.ID= D.user_id
显然这不起作用,因为子查询返回 field_id=1 的完整匹配列表,而不仅仅是单个结果。但是当我让子查询有自己的内部连接(丑陋!)时,整个事情也不起作用,因为子查询和主查询的 ID 匹配不同步。
有什么建议吗?
【问题讨论】:
-
您可以考虑在应用程序代码中处理显示问题
-
我也在尝试通过这个了解更多关于 mysql 的信息。您是否建议我尝试做的事情在 SQL 中是不可能的?如果是这样的话,我只会放弃。 (另外,我尝试将整个数据库导出到 excel 并尝试将其合并到那里,但我的 excel 比 sql 更差)...
-
一切皆有可能。就我个人而言,我发现动态 sql 有点痛苦——尽管如果你使用 MySQL 8+,事情会更简单
-
对我应该如何解决这个问题有什么想法吗?我应该只导出原始 sql 中的所有内容并尝试在其他地方合并/旋转它吗?
-
不完全是您所需要的stackoverflow.com/questions/49680392/…,但“扁平化” bp_xprofile_data 的原则就在那里——这将是第一步,然后您将加入用户表。你可以通过搜索 MYSQL PIVOT WORDPRESS 来研究这个
标签: mysql wordpress phpmyadmin