【问题标题】:Select a particular type of columns that begin with a certain letter and fetch data all together选择以某个字母开头的特定类型的列并一起获取数据
【发布时间】:2013-07-31 04:51:01
【问题描述】:

我正在尝试在选择特定类型的列的同时获取数据
我正在做的是:

 SELECT COLUMN_NAME
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE table_name = 'table'
        AND table_schema = 'DB'
        AND column_name LIKE 'f%'

这个查询会给我列名,是否可以同时获取这些列的数据?或者我需要获取 cols 的数组并进行另一个查询?假设我想获取所有数据,没关系。
谢谢。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您可以为此使用存储过程,使用动态 sql。

    首先,您必须创建这个存储过程:

    CREATE PROCEDURE FetchColumns (IN pSchemaName char(50), IN pTableName char(50), IN     pColumnLikeCondition char(50))
    BEGIN
      DECLARE v_cols char(200);
      SELECT group_concat(COLUMN_NAME separator ' , ') INTO v_cols FROM INFORMATION_SCHEMA.COLUMNS
      WHERE table_name = pTableName
           AND table_schema = pSchemaName
           AND column_name LIKE pColumnLikeCondition;
    
      SET @s = CONCAT('SELECT ',v_cols,' FROM ',pTableName );
      PREPARE stmt FROM @s;
      EXECUTE stmt;
    END
    

    最后,你所要做的就是调用它,像这样:

    call FetchColumns('DB', 'table', 'f%')
    

    【讨论】:

    • 您到底想做什么?只需从 PHP 调用这个 SP,或者也创建它!
    • 我想查询这些列的数据,有这样的选项吗?或者我需要进行第一个查询来获取列名,而不是获取这个数组并为每个列获取这些列的数据?
    • 您可以: - 创建“FetchColumns”SP,然后从 PHP 调用它,它返回所需列的所有数据。 - 或进行第一个查询以获取所有列名称,然后使用这些名称构建第二个查询以获取数据
    • 好的,谢谢,我尝试在 sql 控制台(在 phpmyadmin 中)运行此查询,但没有结果。也许我做错了什么。无论如何再次感谢!
    【解决方案2】:

    好吧,如果你

    • 首先按照您现在的做法获取列名
    • 然后使用 php 或其他方式在另一个查询中使用列名来获取您的数据

    因为我认为没有其他直接的方法。

    【讨论】:

      猜你喜欢
      • 2018-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-25
      • 1970-01-01
      • 2013-01-07
      • 2015-08-30
      • 1970-01-01
      相关资源
      最近更新 更多