我正在尝试解决以下 sql 问题:
我有一个 ACTIONS
表,其中包含以下内容:
------------------------------------
| ACTIONS |
|----------------------------------|
| ID |
| GROUP_ID |
| TABLENAME |
| FEATURE_ID |
------------------------------------
还有一堆看起来像这样的表格:
------------------------------------
| GRASS or SAND or ... |
|----------------------------------|
| FEATURE_ID |
| POSITION |
|+(more columns depending on table)|
------------------------------------
现在 ACTIONS
.TABLENAME
指向某个表(例如:GRASS
或 SAND
或 ...
)
所有这些表格都有一个名为position
的列
我现在想从 ACTIONS
表中查询所有操作及其各自的 POSITION
值。
我如何告诉查询去寻找正确表中的位置值?
感谢您为我指明了正确的方向!
最大
最佳答案
您不能直接执行此操作,因为 Mysql 不支持连接到变量表名称。
如果您知道要连接到特定的链接表,则这 2 种解决方案是动态生成 SQL(使用脚本语言或 SQL 过程),或者构建一个联合查询,每个查询包含一个子查询表。
SELECT actions.id, actions.group_id, actions.tablename, actions.feature_id, grass.position
FROM actions
INNER JOIN grass
ON actions.feature_id = grass.feature_id
WHERE actions.tablename = 'grass'
UNION
SELECT actions.id, actions.group_id, actions.tablename, actions.feature_id, sand.position
FROM actions
INNER JOIN sand
ON actions.feature_id = sand.feature_id
WHERE actions.tablename = 'sand'
UNION
........
关于MYSQL 变量表名来自值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26970250/