【问题标题】:Select 1 row from main table and multiple rows from related table [duplicate]从主表中选择 1 行,从相关表中选择多行 [重复]
【发布时间】:2016-06-04 07:08:18
【问题描述】:

我有一个mysql“用户”表:

id | name
1  | Jane Doe

和第二个表“custom_user_fields”(与用户ID相关):

id | userid | fieldname | value
1  | 1      | country   | us
2  | 1      | address   | test address

使用 PHP,我必须创建一个包含所有用户及其相关字段的列表(如果可以使用单个查询)。

预期结果:

id | name     | country | address
1  | Jane Doe | us      | test address

有可能吗?

【问题讨论】:

    标签: php mysql relation


    【解决方案1】:

    这对于表custom_user_fields 中的一组预定义相关字段是可能的。您可以使用条件聚合

    SELECT u.id, u.name,
           MAX(CASE WHEN fieldname = 'country' THEN value END) AS country, 
           MAX(CASE WHEN fieldname = 'address' THEN value END) AS address
    FROM users AS u
    LEFT JOIN custom_user_fields AS c ON u.id = c.userid 
    GROUP BY u.id, u.name
    

    【讨论】:

      猜你喜欢
      • 2015-11-03
      • 2012-11-27
      • 2017-08-29
      • 2022-09-28
      • 2020-07-16
      • 1970-01-01
      • 1970-01-01
      • 2013-07-16
      • 2012-02-05
      相关资源
      最近更新 更多