sql从列中描述的表名称中选择

时间:2018-09-19 11:43:16

标签: mysql sql

我想从一个具有另一个表中描述的表名的sql表中选择。

SELECT * 
FROM first_table t1 
WHERE EXISTS (SELECT * FROM t1.other_table t2 WHERE t1.other_table_id = t2.id)

找不到解决方案!

感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

解决方案

您可以在查询中使用动态变量:

SET @table := (select tableName from test limit 1);
set @qry1:= concat('select * from ',@table);
prepare stmt from @qry1 ;
execute stmt ;

,甚至:

set @qry1:= concat('select * from ', (select tableName from test limit 1));
select @qry1;
prepare stmt from @qry1 ;
execute stmt ;

SQLFiddle示例: http://sqlfiddle.com/#!9/a787e3/1

注意:SqlFiddle不允许在右编辑器中运行execute,因此我不得不使用视图。

免责声明/注释:

您应该清除tableName表的所有输入。这样一来,没人会在该表中插入SQL并执行它。

另外,请注意,在真实数据库中,表选择查询将具有where条件。

示例:

set @qry1:= concat('select * from ', (select tableName from test where id='something'));

答案 1 :(得分:0)

  SELECT * 
   FROM first_table t1 
    WHERE EXISTS (SELECT * FROM other_table t2 WHERE t1.other_table_id = t2.id)

答案 2 :(得分:-1)

react-navigation

此处navigator应该更改为仅返回结果集中的一行