gpt4 book ai didi

mysql - 从 SELECT 返回的 JOIN 表名称

转载 作者:行者123 更新时间:2023-11-29 23:46:16 24 4
gpt4 key购买 nike

我想在可更新 View 中加入 order_id 上的 5-20 个表(可能会更改),以便从生产 mysql 数据库转储到阶段 mysql 数据库。我有一个查询返回列名为“order_id”的所有表:

SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = 'order_id'

让我们假设上面是“target_tables”,下面是有效的语法

SELECT * FROM target_tables JOIN target_tables ON order_id WHERE order_id > 20787

正确的语法是什么?

最佳答案

您可以将此解决方案与 NATURAL JOIN 和准备好的语句一起使用。如果某些表具有相同名称的列并且您不想加入它们,则它可能无法按预期工作。您可以在 NATURAL 和 JOIN 之间添加关键字 LEFT,以使用 LEFT JOIN 代替 INNER JOIN。

SET @my_query := CONCAT(
'SELECT * FROM ', (
SELECT GROUP_CONCAT(TABLE_NAME SEPARATOR ' NATURAL JOIN ')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'your_schema' AND COLUMN_NAME = 'order_id'
), ' WHERE order_id > 20787'
);
PREPARE stmt FROM @my_query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

不要忘记将“your_schema”修改为您的数据库名称。

关于mysql - 从 SELECT 返回的 JOIN 表名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25925557/

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