MySQL table 名称中的临时变量
MySQL temporary variable in table name
我有一系列具有相同前缀的表,我需要 select 最新版本的数据——其后缀具有最高数字。这是我拥有的:
SELECT
@latest_version_number :=
MAX(
CAST(SUBSTRING_INDEX(table_name,'_',-1) AS UNSIGNED)
)
FROM information_schema.tables
WHERE lower(table_name) like '{table_prefix}%';
SELECT
*
FROM CONCAT('`{table_prefix}', CAST(@latest_version_number AS CHAR), '`')
当 运行 作为控制台中的 2 个单独查询时,它的行为与我预期的一样。但是我在尝试 运行 将其作为单个查询时遇到“语法错误”。将其重构为单个查询的最简洁方法是什么?谢谢
我知道您可以在 MySQL 中使用 table 名称中的变量的唯一方法是使用 prepare + execute 语句。
这是我在网上找到的一个示例,可以为您提供准确的说明。
https://www.tutorialspoint.com/set-user-defined-variable-with-table-name-in-mysql-prepare-statement
我有一系列具有相同前缀的表,我需要 select 最新版本的数据——其后缀具有最高数字。这是我拥有的:
SELECT
@latest_version_number :=
MAX(
CAST(SUBSTRING_INDEX(table_name,'_',-1) AS UNSIGNED)
)
FROM information_schema.tables
WHERE lower(table_name) like '{table_prefix}%';
SELECT
*
FROM CONCAT('`{table_prefix}', CAST(@latest_version_number AS CHAR), '`')
当 运行 作为控制台中的 2 个单独查询时,它的行为与我预期的一样。但是我在尝试 运行 将其作为单个查询时遇到“语法错误”。将其重构为单个查询的最简洁方法是什么?谢谢
我知道您可以在 MySQL 中使用 table 名称中的变量的唯一方法是使用 prepare + execute 语句。
这是我在网上找到的一个示例,可以为您提供准确的说明。
https://www.tutorialspoint.com/set-user-defined-variable-with-table-name-in-mysql-prepare-statement