gpt4 book ai didi

mysql - 使用列作为带有 concat 的表连接

转载 作者:行者123 更新时间:2023-11-29 16:28:08 26 4
gpt4 key购买 nike

我一直在尝试连接另一个表,其表名与另一个表的列中的值匹配。

如果我将表名称硬编码为匹配的表,如 __gun,它工作正常,但我无法获取要使用的 col 值 + 在开头连接下划线。

问题出在此处的左连接:

在 b.lated_id = c.id 上左连接 CONCAT('__', b.lated_table) c

我需要在联接中使用 related_table 列。前面有 __。

尝试:

        SELECT a.*, c.*, b.equipable, b.related_table FROM inventory a
inner join items b on a.item_id = b.id
left join CONCAT('__', b.related_table) c on b.related_id = c.id
WHERE 1=1
and a.id = :inventory_id
and a.user_id = :user_id

enter image description here

<小时/>
        SELECT a.*, c.*, b.equipable, b.related_table FROM inventory a
inner join items b on a.item_id = b.id
left join '__'+b.related_table c on b.related_id = c.id
WHERE 1=1
and a.id = :inventory_id
and a.user_id = :user_id

enter image description here

<小时/>
        SELECT a.*, c.*, b.equipable, b.related_table FROM inventory a
inner join items b on a.item_id = b.id
left join "__"+Cast(b.related_table as nvarchar(4000)) c on b.related_id = c.id
WHERE 1=1
and a.id = :inventory_id
and a.user_id = :user_id

enter image description here

感谢您考虑我的问题

最佳答案

您无法构造表名称。

A 计划:重新思考架构。拥有多个“相同”表通常是糟糕的设计。

计划 B:编写一个使用 CONCATPREPAREEXECUTEDEALLOCATE_PREPARE 构建的存储过程并运行查询。

关于mysql - 使用列作为带有 concat 的表连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54121876/

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