这是一个查询,通过声明变量,然后准备语句并执行查询,将数据按行转换为列中的数据。
现在我的问题是如何将这个查询转换成laravel格式,请帮助我.
SET @sql = NULL, @sql1 = NULL, @sql2 = NULL;
SELECT GROUP_CONCAT(
CONCAT('WHEN ''', column_name, ''' THEN `', column_name, '`')
SEPARATOR ' ')
INTO @sql1
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = SCHEMA()
AND table_name = '7'
AND column_name LIKE '7%'
GROUP BY table_name;
SELECT GROUP_CONCAT(
CONCAT('SELECT ''', column_name, ''' objectid' )
SEPARATOR ' UNION ALL ')
INTO @sql2
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = SCHEMA()
AND table_name = '7'
AND column_name LIKE '7%'
GROUP BY table_name;
SET @sql = CONCAT(
'SELECT m.ObjectID, m.ObjectLabel, q.Value
FROM modules_forms_objects m LEFT JOIN
(
SELECT objectid,
CASE objectid ', @sql1, ' END value
FROM `7` t CROSS JOIN
(', @sql2, '
) c
) q`enter code here`
ON m.objectid = q.objectid');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;发布于 2017-09-19 09:53:49
为什么不能使用原始查询?
DB::select(' { Your Code Here} ');?
或
DB::raw(' {Your Code Here} ');
https://stackoverflow.com/questions/46297218
复制相似问题