我想选择类型为“文本”的列的值。像这样的东西:
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/