2017-10-05 60 views
-1

在Mysql中,我试图找到一种将列值传递给变量的方法。然后在另一个查询中使用该变量作为表名...下面是它的MsSQL版本,请帮我找一个相当于Mysql的表。将列值作为MySQL中的变量传递

declare @tblname1 varchar(400) 
set @tblname1=(SELECT companyname from companies where id=5) 
exec(' SELECT sh.streetname FROM '[email protected]+' sh WHERE sh.id IN (SELECT id from allstreets)')` ` 

回答

0

看看以下内容:https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.html

set @tblname1=(SELECT companyname from companies where id=5); 
PREPARE stmt1 FROM CONCAT('SELECT sh.streetname FROM ', @tblname1, ' sh WHERE sh.id IN (SELECT id from allstreets)'); 
EXECUTE stmt1; 
DEALLOCATE PREPARE stmt1; 

此外,根据你的问题,我必须说,在公司表中的每个公司名称创建一个表是一个糟糕的设计,并且只能导致挫折和失望。