选择除一列之外的所有列[重复]

Posted

技术标签:

【中文标题】选择除一列之外的所有列[重复]【英文标题】:select all columns except one [duplicate] 【发布时间】:2013-03-23 16:23:20 【问题描述】:

我需要从表“ticket”中选择所有列,除了一列“depname” 以下准备好的语句没有按预期工作。

PREPARE stmt1 FROM 'SELECT ? from magon.ticket limit 2';

select GROUP_CONCAT(COLUMN_NAME) into @clm from COLUMNS  where TABLE_SCHEMA = 'magon' and TABLE_NAME = 'ticket' and COLUMN_NAME NOT IN ('depname')  GROUP BY TABLE_SCHEMA, TABLE_NAME;

execute stmt1 using @clm;

它返回两次列列表(由于限制2),但不返回实际数据。

【问题讨论】:

【参考方案1】:

不幸的是,您不能参数化列名和表名,因为它们是标识符。但是你可以连接字符串中的值,

SET @colName = (SELECT  GROUP_CONCAT(COLUMN_NAME) 
                FROM    COLUMNS  
                WHERE   TABLE_SCHEMA = 'magon' AND 
                        TABLE_NAME = 'ticket' AND 
                        COLUMN_NAME NOT IN ('depname')  
                GROUP   BY TABLE_SCHEMA, TABLE_NAME);
PREPARE stmt1 FROM CONCAT('SELECT ', @colName ,' FROM magon.ticket LIMIT 2');
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
mysql PREPARE Syntax

【讨论】:

以上是关于选择除一列之外的所有列[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 MySQL 查询从表中选择除一列之外的所有内容? [复制]

如何将 summarise_each 应用于除一列之外的所有列? [复制]

如果除一列之外的所有值都相等,则显示一行

如何从python中的数组(或矩阵)中提取除一列之外的所有列?

如何在一个除一列之外的所有列都相同的 Pandas DataFrame 中合并观察结果?

使用 T-SQL 中的 OVER 子句在除一列之外的所有列上选择 DISTINCT