【问题标题】:mysql - query inside a querymysql - 在查询中查询
【发布时间】:2010-12-20 15:02:26
【问题描述】:

如何做到以下几点: (我正在使用 mysql - phpmyadmin)

这个查询返回一个表名:

Select table_name from Table1 where id = 1

我想在另一个查询中使用它,例如:

select val from (Select table_name from Table1 where id = 1)

但这肯定不行,而且由于phpmyadmin不支持调用存储过程,有什么可能的解决方案吗?

【问题讨论】:

  • val 是什么?你想从table_name 得到什么?
  • 解释真正的问题,而不是你试图解决它的错误尝试。
  • val 是所有表中通用的字段,无论表名是什么

标签: mysql phpmyadmin


【解决方案1】:

你不能在一个SQL 语句中真正做到这一点。

您正在尝试将data(字段值)用作metadata(表名),而SQL 不允许这样做。

您可以将其拆分为两条语句或在存储过程中写入动态SQL。请注意,并非所有客户端层都支持从存储过程返回结果集。

【讨论】:

    【解决方案2】:

    你也可以执行动态选择:

    declare v_table_name VarChar(128);
    BEGIN 
    
    Select table_name into v_table_name from Table1 where id = 1
    SET @s = CONCAT('SELECT * FROM ', v_table_name, ' where id = 1'); 
    PREPARE stmt1 FROM @s; 
    EXECUTE stmt1; 
    DEALLOCATE PREPARE stmt1; 
    
    END;
    

    【讨论】:

      猜你喜欢
      • 2013-03-16
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-11
      • 1970-01-01
      相关资源
      最近更新 更多