我想从一个具有另一个表中描述的表名的sql表中选择。
SELECT *
FROM first_table t1
WHERE EXISTS (SELECT * FROM t1.other_table t2 WHERE t1.other_table_id = t2.id)
找不到解决方案!
感谢任何帮助。
答案 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
应该更改为仅返回结果集中的一行