【发布时间】:2011-05-09 01:35:29
【问题描述】:
假设我有table1,其中有一列名为“table_name”。我使用table1.table_name 来存储数据库中另一个表的名称。可引用的表都有一个字段“target_id”。
可以在 JOIN 语句中使用 table_name 吗?
例如:
SELECT t1.*, t2.* FROM table1 AS t1
JOIN table1.table_name AS t2 ON t1.table1_id = t2.target_id
显而易见的解决方案是使用脚本(在我的例子中是 C++)首先获取表名,并从中构造一个 SQL 查询。问题是:我们可以绕过脚本直接在 SQL (MySQL) 中执行此操作吗?
【问题讨论】:
-
这种情况下动态 SQL 是要走的路。
-
@Gabe:请注意,我使用 mysql。这是特定于供应商的扩展吗?
-
这很可能是应该更改模型的情况。您可以尝试通过本专栏描述您正在完成的工作,我们或许可以帮助您改进您的模型。
-
@Peter Lang,谢谢。我正处于定义我的模型的过程中。我仍然不确定要走哪条路,我正在权衡不同的选择,因此提出了这个问题。
-
如果您需要这样做,我建议您的模型是错误的。为什么需要引用不同的表?请展示您提出的表格结构,也许我们可以帮助您更好地设计结构。
标签: mysql sql dynamic-sql