用 mysql 组合多列中的多行

Combine multiple rows in multiple colums with mysql

我正在尝试从 wordpress 插件导出一些数据,该插件在多行中保存 3 个自定义文件(姓名、姓氏和电子邮件)。 每个字段都有一个“meta_key”来标识它(因此理解字段名称很“简单”)但是在我的数据库中我需要一个包含多个列的行。

示例:

WP 数据库(名为“table_postmeta”)

  post_id | meta_key | meta_value
      1   |    7a4   |   Name1
      1   |    f53   |   Surname1
      1   |    8ff   |   test1@test.com
      2   |    7a4   |   Name2
      2   |    f53   |   Surname2
      2   |    8ff   |   test2@test.com
      3   |    7a4   |   Name3
      3   |    f53   |   Surname3
      3   |    8ff   |   test3@test.com 

我的 table(名为“用户”,我将在我的数据库中创建一个 _postmeta table 的副本,这样我总是有一个清晰的副本):

post_id | Name   | Surname  | Mail
  1     | Name1  | Surname1 | test1@test.com
  2     | Name2  | Surname2 | test2@test.com
  3     | Name3  | Surname3 | test3@test.com

有没有办法用 mysql 做到这一点,或者最好使用 php 脚本?

谢谢!

关于什么是最好的,这取决于您的经验水平和维护方式,事实上,强烈反对此类会引起固执己见的回答的问题。

如果您有其他脚本逻辑,那么如果此解析过程包含在该脚本中,那么从长远来看可能会更简单。

但是,如果您的大部分编码逻辑都在数据库中,那么您可以在纯 SQL 中作为您现在使用的 CRUD 脚本的一部分来执行此操作,或者您可以正式提供一个存储过程来为您管理。

这在很大程度上取决于 meta_key 的定义位置以及可以访问它的代码环境。如果数据库上下文无法解决此问题,那么您将需要在脚本中执行此操作。

For this type of issue it is better to try one way first, then ask for help when you need it. For something as simple as this what is BEST is largely irrelevant, as long as it WORKS for you and you know how to maintain it.