gpt4 book ai didi

Mysql UNION 与动态查询

转载 作者:行者123 更新时间:2023-11-30 00:08:03 30 4
gpt4 key购买 nike

我有以下问题。我继承了一个为每个客户使用数据库前缀的软件。所有表都具有相同的结构和列。为了将数据迁移到新版本,我想合并所有这些表 并设置一个客户外键并删除所有子表。我正在寻找一种方法来创建 此任务的 View ,因为我现在也想保持向后兼容。我发现这个动态查询似乎可以满足我的要求但我无法在我的 mysql 服务器上执行。我假设它是为另一个 SQL Server 编写的。

表名结构为(约80个客户表):客户1_传真客户2_传真客户3_传真客户4_传真...

您将如何解决这个问题?

DECLARE  @SelectClause  VARCHAR(100)    = 'SELECT *'
,@Query VARCHAR(1000) = ''

SELECT @Query = @Query + @SelectClause + ' FROM ' + TABLE_NAME + ' UNION ALL '
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '%_faxe'

SELECT @Query = LEFT(@Query, LEN(@Query) - LEN(' UNION ALL '))

EXEC (@Query)

最佳答案

此查询使用 SQL Server 语法。你需要这样的东西:

declare @SelectClause varchar(8000);
declare @Query varchar(8000);

set @SelectClause = 'SELECT *';

SELECT @Query := group_concat(@SelectClause, ' FROM ', TABLE_NAME SEPARATOR ' UNION ALL ')
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '%_faxe';

prepare stmt from @Query;
execute stmt;

请注意,带有 separatorgroup_concat() 简化了逻辑。

关于Mysql UNION 与动态查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24343308/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com