mysql - 仅选择文本列

标签 mysql

我想选择类型为“文本”的列的值。像这样的东西:

SELECT (SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'mytable' AND COLUMN_TYPE='text') FROM `mytable`

这可能吗?我搜索了很多,但一无所获,对此我有点悲观。

[当然上面语句的问题是第二个 SELECT 返回多行]

#1242 - Subquery returns more than 1 row

最佳答案

除了未提及的常规查询之外,您还需要在此处使用大量语句,您需要从 Information.Schema 中获取列。您可以使用 GROUP_CONCAT()功能与PREPARE and EXECUTE一起声明。

它可能看起来像这样:

SET @col = NULL;
SET @query = NULL;

SELECT (
   SELECT GROUP_CONCAT(COLUMN_NAME) as ColumnNames
   FROM INFORMATION_SCHEMA.COLUMNS
   WHERE table_name = 'table_name' 
   AND data_type='text' )
INTO @col;

SET @query = CONCAT('SELECT ', @col, ' FROM table_name');

PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

查看我的 Sql Fiddle Demo

关于mysql - 仅选择文本列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24623240/

相关文章:

mysql - 使用 MySQL 存储过程从结果集中选择唯一值

php - 使用 PHP 将 MySQL 转换为 Mongodb 时出现编码问题

MySQL 三表链式左连接,按最后一张表过滤

Python 不返回任何 MySQL 结果

php - mysql中的未排序结果

php - 访问不同服务器上的数据库,无需使用主主/主从复制

php - 函数找不到变量?

mysql - 如何使用 Ruby 的 Sequel 工具包更新 MySQL 数据库中的一行?

mysql - 选择不在多列mysql中的行

php - Mysql数组数据不显示表格