MYSQL 变量表名来自值

标签 mysql syntax

我正在尝试解决以下 sql 问题:

我有一个 ACTIONS 表,其中包含以下内容:

------------------------------------
|             ACTIONS              |
|----------------------------------|
|                ID                |
|             GROUP_ID             |
|             TABLENAME            |
|             FEATURE_ID           |
------------------------------------

还有一堆看起来像这样的表格:

------------------------------------
|       GRASS or SAND  or ...      |
|----------------------------------|
|            FEATURE_ID            |
|             POSITION             |
|+(more columns depending on table)|
------------------------------------

现在 ACTIONS.TABLENAME 指向某个表(例如:GRASSSAND...)

所有这些表格都有一个名为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/

相关文章:

syntax - Lisp DO变量语法推理

mysql - SQL语法;错误

parsing - Haskell:let 语句有问题

python - 无法从 mysql-utilities : "No module named mysql.utilities.common.tools" 运行任何东西

php - 从钱包系统计算可用余额,不包括过期信用

php - 使用单个按钮更新单独的记录

plsql - Visual Studio 2015 中的 PL/SQL 语法突出显示

html - 对 HTML 属性使用单引号是否正确?

php - 查找对话次数和每次对话的总时间

PHP if语句检查变量为空问题