当前位置: 首页 > 面试题库 >

使用子查询代替表名

孙嘉
2023-03-14
问题内容
Table Meta:
-------------------------------------
type                  tab_name
new                   tab_news
sports                tab_sps

Table tab_news
------
id

Table tab_sps
-------------------
id
xx

现在我要使用

SELECT id 
  FROM (SELECT tab_name 
          FROM Meta 
         WHERE type = 'news');

但这行不通,有什么想法吗?


问题答案:

SQL不支持表名使用变量/ etc-支持您要求的唯一方法是使用动态SQL:

FOR i IN (SELECT tab_name
            FROM META m
           WHERE m.type = ?) LOOP
  EXECUTE IMMEDIATE 'SELECT * FROM '|| i.tab_name ||'';
END LOOP;


 类似资料:
  • 关于子查询使用 利用子查询进行过滤 列出够物品RGAN01的所有客户。 检索包含物品RGAN01的所有订单编号。 检索具有前一步骤列出的订单编号所有客户ID。 检索前一步骤返回的所有客户ID的客户信息。 mysql> SELECT order_num -> FROM OrderItems -> WHERE prod_id = 'RGAN01'; +-----------+ | or

  • 问题内容: 我有一个带有以下各列的表TEST: 现在我想选择10个行,其c的值不同 所以我写了以下查询: 该查询在理想情况下应该可以运行,但是我的MySQL版本说: 此版本的MySQL尚不支持“ LIMIT&IN / ALL / ANY / SOME子查询” 有人可以建议我替代此查询吗? 问题答案: 您收到的错误并非完全是由于MySQL版本引起的。我认为所有版本都支持。您必须更改LIMIT 10的

  • 问题内容: 我有需要变量替换以更好地使用Go-kit服务的sql查询。 我有&作为用户输入的内容,这是我的休息服务的一部分,例如:和。 我已经尝试了一些事情,例如: 和: 导致错误: 仅硬编码的值有效,替换失败。 我没有从Oracle博客那里找到很多有关此方面的帮助,并且想知道是否有任何方法可以解决此问题。 问题答案: 参数占位符语法(参考:http : //go-database- sql.or

  • 本文向大家介绍Hive里面用什么代替in查询相关面试题,主要包含被问及Hive里面用什么代替in查询时的应答技巧和注意事项,需要的朋友参考一下 解答: 提示:Hive中的left semi join替换sql中的in操作  

  • 问题内容: 是否可以在使用MySQL的子查询中引用外部查询?我知道在 某些 情况下这是可能的: 但是我想知道这样的事情是否可以工作: 我知道我可以使用或通过将外部子句拉入子查询来实现相同目的,但是我需要这样做来自动生成SQL,并且由于各种其他原因,不能使用任何一种替代方法。 更新 :对不起,这个问题引起了一些混乱:第一个查询只是一个可行的示例,以演示我 不需要的 东西。 更新2 :我需要两个u.i

  • 问题内容: 可以说我有这样的第一张桌子 分支表 第二张桌子是这样的 余额表 我想查询余额表,其中每一行包含分支表的名称。例如分支表中的“ 123456ABC”,我想从余额表中获取“ ABC”行 我怎样才能做到这一点?到目前为止,我还没有尝试过这个查询 有什么建议吗? 问题答案: 你应该 转换 了的名称模式: 联接看起来更易读: