mysql学习笔记之行转列动态sql

160 阅读1分钟

本次工作目的在于将两张表中的数据通过行转列的方式展示出来 动态sql如下

SELECT IFNULL(
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'MAX(IF(id(行数据id) = ''',
      id,
      ''', 列数据, 0)) AS ''',
      id,
   ''''
    )
  )  ,'1')
 FROM oil_guojioil c where ********;

还有另一种写法

    GROUP_CONCAT(DISTINCT
    CONCAT(
      'MAX(CASE WHEN id = ''',
        id,
        '''THEN 列数据 ELSE NULL END) AS ''',
        id,
        ''''
        )
  )  ,'1')

注意其中的单引号,很多。

动态sql定义完后就可以查找了 利用

select ${动态sql的返回变量} from ***