MYSQL 查询在 LEFT JOIN 中使用变量作为表名
SELECT var1,var2,var3,table_name
FROM table1 LEFT JOIN table_name on var3=table_name.id
这意味着我想动态左连接表,具体取决于 table1
中的 table_name
值,因为 var3
是从那里获取的。
但上面的查询结果是
表table_name不存在
我的mysql限制错误?
SELECT var1,var2,var3,table_name
FROM table1 LEFT JOIN table_name on var3=table_name.id
Meaning I want to dynamically left join table, depending on value of table_name
from table1
, since var3
is taken from there.
But the above query results in
table table_name does not exist
My mistake of mysql limitation?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
表名以及列名在 SQL 查询中不能是动态的。因此,您必须以编程方式应用逻辑,使用 2 个查询或使用存储过程,请参阅此处的示例: http://forums.mysql.com/read.php?98,126506,126598#msg-126598
Table names, as well as column names, can't be dynamic in an SQL query. So you have to apply your logic programmatically, using 2 queries, or with a stored procedure, see an example here: http://forums.mysql.com/read.php?98,126506,126598#msg-126598
另一种方法是将所有表与联合查询联合起来:
您甚至可以将其准备为视图:
从而安全地查询它:
在你的具体情况下,它可能看起来像这样:
Another way is to unite all tables with a union query:
You could even prepare that as view:
And thus query it safely:
In your exact case it could look like this: