我有一系列具有相同前缀的表,我需要从最新版本中选择数据--其后缀具有最高的数字。以下是我所拥有的:
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), '`')
它的行为与我在控制台中作为两个单独的查询运行时所期望的一样。但我在尝试将其作为单个查询运行时遇到了“语法错误”。将其重构为单个查询的最干净的方法是什么?谢谢
1条答案
按热度按时间dsf9zpds1#
我知道在mysql中可以在表名中使用变量的唯一方法是使用prepare+execute语句。
下面是我在网上找到的一个例子,它给出了确切的说明。
https://www.tutorialspoint.com/set-user-defined-variable-with-table-name-in-mysql-prepare-statement