-- 动态SQL在MySQL中通常通过使用预处理语句(PREPARE、EXECUTE和DEALLOCATE)来实现。
-- 下面是一个简单的示例,演示如何根据用户输入动态生成并执行SQL查询。
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'MAX(CASE WHEN column_name = ''',
column_name,
''' THEN column_value END) AS ',
column_name
)
) INTO @sql
FROM
information_schema.columns
WHERE
table_name = 'your_table_name'
AND table_schema = 'your_database_name';
SET @sql = CONCAT('SELECT ', @sql, ' FROM your_table_name');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- 解释:
-- 1. 使用GROUP_CONCAT和CONCAT函数动态生成SQL查询字符串,并将其存储在@sql变量中。
-- 2. 使用PREPARE语句将动态生成的SQL字符串准备为可执行的语句。
-- 3. 使用EXECUTE语句执行准备好的语句。
-- 4. 使用DEALLOCATE PREPARE释放准备好的语句。
上一篇:docker拉取mysql镜像
下一篇:mysql8 忽略数据库大小写
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站