MySQL动态行值作为列名

用户名

最近我遇到了一个具有以下结构的项目

http://sqlfiddle.com/#!2/3a4cf/1

一切正常,我想我可以在PHP端对事物进行排序,但是我的问题是,使用单个查询是否可能

number, name, age, email, gender
--------------------------------------------
123456, Test1, 24, [email protected], m
123457, Test2, 23, [email protected], f
123458, Test3, 22, [email protected], m
123459, Test4, 21, [email protected], f
123460, Test5, 25, [email protected], m

将列名称视为实际字段。

我尝试了多个左/右联接(与数量一样多的字段),但是可以上升到无限大声笑...即具有100个字段(将是200个联接)以在单行中获得结果(仍然没有列)名称为field_value)。

我研究了以下内容(可能重复):

mysql选择动态行值作为列名,另一列作为值

但是并没有对我说太多(不是在mysql :()中经历过的。

如果可能的话,如果有人可以指导我如何实现这一目标,我将不胜感激。

提前致谢。

米海特

我想你要这个查询

SELECT SQL_NO_CACHE
    n.number, n.name, 
MAX(CASE WHEN f1.field_name='age' THEN nf1.value END) as Age,
MAX(CASE WHEN f1.field_name='email' THEN nf1.value END) as Email,
MAX(CASE WHEN f1.field_name='gender' THEN nf1.value END) as Gender
FROM
    number AS n
        LEFT JOIN
    number_field AS nf1 ON n.id = nf1.number_id
        RIGHT JOIN
    field AS f1 ON f1.id = nf1.field_id
WHERE
    1 = 1
GROUP BY n.number,n.name
ORDER BY number

小提琴

动态的

SET SESSION group_concat_max_len = 1000000;

SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
    CONCAT(
      'MAX(CASE WHEN f1.field_name= ''',
      f1.field_name,
      ''' THEN nf1.`value` END) AS ',
      f1.field_name
    )
   )INTO @sql
FROM  
    number_field AS nf1 
        RIGHT JOIN
    field AS f1 ON f1.id = nf1.field_id
ORDER BY f1.field_name;


SET @sql=CONCAT('SELECT n.number, n.name, ',@sql,' FROM
  number AS n
        LEFT JOIN
    number_field AS nf1 ON n.id = nf1.number_id
        RIGHT JOIN
    field AS f1 ON f1.id = nf1.field_id
GROUP BY n.number,n.name
ORDER BY number');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

小提琴

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

计算行值作为列名mysql

来自分类Dev

使用Codeigniter和mysql获取行值作为列名

来自分类Dev

按特定顺序选择动态行值作为列名

来自分类Dev

从其他表中选择具有动态名称的行作为新表中与articleId匹配的列名

来自分类Dev

使用mysql行值作为mysql运算符

来自分类Dev

MySQL动态行值作为列名

来自分类Dev

R:转换数据(因子值作为列名)

来自分类Dev

创建数据框作为行索引值和列名称的函数?

来自分类Dev

使用特定行的值作为列名

来自分类Dev

表值函数,动态列名

来自分类Dev

SQL:如何显示与行值数据作为列名再算上每行值乘以ID的数量?

来自分类Dev

SPSS值标签作为R中表的列名

来自分类Dev

如何在Oracle SQL 11g中使用行值动态选择列名?

来自分类Dev

使用Scala和Spark读取文本文件中的键/值对,键作为列名,值作为行

来自分类Dev

AsUpdate的SqlKata值作为列名

来自分类Dev

使用列值作为列名

来自分类Dev

数据转换:以列值作为列名

来自分类Dev

如何将字典键转换为for循环中的列名和值作为行

来自分类Dev

将重复的值作为新数据框中的列名,将行作为另一列中的对应值

来自分类Dev

返回列名作为列中的值

来自分类Dev

SQL-使用列名的值作为参数

来自分类Dev

MySQL查询-根据不同表中的列名获取行值

来自分类Dev

MySQL选择行值作为键=>值

来自分类Dev

按特定顺序选择动态行值作为列名

来自分类Dev

从其他表中选择具有动态名称的行作为新表中与articleId匹配的列名

来自分类Dev

使用mysql行值作为mysql运算符

来自分类Dev

动态选择列名(基于另一个表行的值)

来自分类Dev

MySQL选择动态行作为列名

来自分类Dev

Mysql从一个表中选择动态行值作为列名,从另一个表中选择值

Related 相关文章

  1. 1

    计算行值作为列名mysql

  2. 2

    使用Codeigniter和mysql获取行值作为列名

  3. 3

    按特定顺序选择动态行值作为列名

  4. 4

    从其他表中选择具有动态名称的行作为新表中与articleId匹配的列名

  5. 5

    使用mysql行值作为mysql运算符

  6. 6

    MySQL动态行值作为列名

  7. 7

    R:转换数据(因子值作为列名)

  8. 8

    创建数据框作为行索引值和列名称的函数?

  9. 9

    使用特定行的值作为列名

  10. 10

    表值函数,动态列名

  11. 11

    SQL:如何显示与行值数据作为列名再算上每行值乘以ID的数量?

  12. 12

    SPSS值标签作为R中表的列名

  13. 13

    如何在Oracle SQL 11g中使用行值动态选择列名?

  14. 14

    使用Scala和Spark读取文本文件中的键/值对,键作为列名,值作为行

  15. 15

    AsUpdate的SqlKata值作为列名

  16. 16

    使用列值作为列名

  17. 17

    数据转换:以列值作为列名

  18. 18

    如何将字典键转换为for循环中的列名和值作为行

  19. 19

    将重复的值作为新数据框中的列名,将行作为另一列中的对应值

  20. 20

    返回列名作为列中的值

  21. 21

    SQL-使用列名的值作为参数

  22. 22

    MySQL查询-根据不同表中的列名获取行值

  23. 23

    MySQL选择行值作为键=>值

  24. 24

    按特定顺序选择动态行值作为列名

  25. 25

    从其他表中选择具有动态名称的行作为新表中与articleId匹配的列名

  26. 26

    使用mysql行值作为mysql运算符

  27. 27

    动态选择列名(基于另一个表行的值)

  28. 28

    MySQL选择动态行作为列名

  29. 29

    Mysql从一个表中选择动态行值作为列名,从另一个表中选择值

热门标签

归档