MySQL查询JOIN
问题描述:
SELECT var1,var2,var3,table_name
FROM table1 LEFT JOIN table_name on var3=table_name.id
含义我想离开动态连接表,根据从table1
的table_name
价值,因为var3
从那里取。MySQL查询JOIN
但
与表table_name上述查询结果不存在
我的MySQL限制的错误呢?
答
在SQL查询中,表名和列名不能是动态的。因此,您必须通过编程方式应用您的逻辑,使用2个查询或存储过程,请参阅此处的示例:http://forums.mysql.com/read.php?98,126506,126598#msg-126598
我不认为您可以这样做。如果你想要这种类型的功能或重新设计你想要做的事情,你可能需要将表名传递给存储过程。 – spig 2010-09-05 14:39:48
这不是MySQL限制。更像是SQL限制,如果你可以调用它,但我宁愿说,这是一个迹象表明,你的数据库设计有问题。 – Mchl 2010-09-05 15:01:36
主表包含对象。每个对象都可以有属性。每个属性列出可能的值都有单独的表格 - 值可能非常长(数百个字符),并且有很多可能的值(数千)。 所以主表每个属性有两个字段:attr_table_name,attr_table_id - 节省空间并允许修改属性名称。 查询运行时,我返回实际的属性值,而不是id,这就是为什么我需要LEFT JOIN和动态表命名。 你还会怎样设计数据库? – selytch 2010-09-13 04:11:50