选择以特定字母开头的特定类型的列并一起获取数据

时间:2013-07-31 04:51:01

标签: mysql

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

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

这个查询会给我col名称,有选项可以同时获取那些colum的数据吗?或者我需要获取cols的数组并进行另一个查询?假设我想获取所有数据,这没关系 感谢。

2 个答案:

答案 0 :(得分:0)

好的,如果你

  • 首先获取您现在正在进行的列名称
  • 然后使用php或其他东西在另一个查询中使用列名来获取数据

因为我不认为还有另一种直接的做法。

答案 1 :(得分:0)

您可以使用动态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%')