mysql - 编辑 mysql 表名以与一列的值组合(连接)

标签 mysql stored-procedures concatenation create-table

我有一个名为'Details'的表,该详细信息表有几列,其中一列是'TicketNumber'

我希望做的是将表命名为'Details_TicketNumber' ---不是实际的单词,而是第一个/最高票号的值。

例如,如果 TicketNumber 是“12345”

表名称为Details_12345

我怎样才能做到这一点?我已经搜索了几个小时,但今天没有成功。谢谢

这是我尝试过的(并意识到它行不通)

尝试1:

Rename table details 
to  (select concat("details",details.ticketnumber));

尝试2:

set @sql = CONCAT(details,
                  details.TicketNumber)
                 );

prepare s from @sql;

execute s;

最佳答案

根据 @JeffUK 和 reference 的建议他指出。我相信这应该在存储过程中工作。

DECLARE highest_ticket INT DEFAULT 0;

SELECT MAX(ticket_number) INTO highest_ticket 
FROM details;

set @s = CONCAT('RENAME TABLE details to details_',highest_ticket); 
prepare renameTable from @s;
EXECUTE renameTable ;
DEALLOCATE PREPARE renameTable ;

关于mysql - 编辑 mysql 表名以与一列的值组合(连接),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49559465/

相关文章:

mysql - MYSQL创建脚本存储过程时SQL语法错误

sql - 如果引用不存在的表/列,导致创建存储过程失败

sql - Oracle 程序与 MS 程序与 Oracle 程序包

list - 如何在 Prolog 中 append 列表?

php - 无法在 php mysql 中使用 union

php - 将 PHP MySql 与 Flex 捆绑在一起提供给客户端

mysql - mysql 查询上的 LEFT JOIN 没有得到我想要的结果

delphi - 当我对 SMS PDU(GSM 7 位)用户数据进行编码/解码时,是否需要先添加 UDH?

php - Laravel - 仅同步数据透视表的一个子集

mysql - 返回不需要的行