mysql - 表名中的 MySQL 临时变量
问题描述
我有一系列具有相同前缀的表,我需要从最新版本中选择数据——其后缀具有最高的数字。这是我所拥有的:
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 的表名中使用变量的唯一方法是使用准备 + 执行语句。
这是我在网上找到的一个示例,它为您提供了确切的说明。
https://www.tutorialspoint.com/set-user-defined-variable-with-table-name-in-mysql-prepare-statement
推荐阅读
- reactjs - setState 和 index 的 react-dropdown-tree-select 问题
- javascript - React 测试库:如何按组件名称查询元素?
- html - django 中是否有任何内置函数来清理 request.POST 字典键中的数据?
- perl - 如何从 Perl 发送定期电子邮件?
- r - 在 Rshiny 中创建一个清除答案的数据输入表单
- ansible - ansible include_vars 使用循环时未定义问题
- python - 试图从文本文件创建字典列表
- r - 在R中的字符串之前使用〜时是什么?
- javascript - 如何在按钮单击时关闭整个浏览器?
- powerbi - 在 CALCULATE 函数中,当提供超过 1 个过滤器表达式时,如何应用过滤器?