在一个过程中,我想从所有数据库的特定表中选择一个值。我开发了代码并达到了这一点:
BEGIN
DECLARE dynamic_query LONGTEXT;
SET SESSION group_concat_max_len = 100000000;
SET dynamic_query = (
SELECT
GROUP_CONCAT(
"SELECT option_name AS _key, option_value as _value from ",
TABLE_NAME,
" where option_name like '",
"something%'" SEPARATOR ' union ')
FROM
(
SELECT
CONCAT(`database_name`,'.',`table_prefix`,'options') as TABLE_NAME
FROM `tablename`
WHERE `database_name` <> '' AND `table_prefix` <> ''
) AS tmp
);
SELECT dynamic_query;
END
然后复制输出并执行它,效果很好。但是,当我添加如下所示的prepare语句时,出现了this bug中提到的错误。
PREPARE result_query FROM dynamic_query;
EXECUTE result_query;
DEALLOCATE PREPARE result_query;
还有其他方法可以获取所需的输出吗?
P.S .:我正在使用SET SESSION group_concat_max_len = 100000000;
来扩展group_concat的限制,但是我更喜欢另一种方式,因为数据库的数量正在增长。