3

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

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

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

4

2 回答 2

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%')
于 2013-07-31T09:07:20.253 回答
0

好吧,如果你

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

因为我认为没有另一种直接的方法。

于 2013-07-31T05:04:37.787 回答