【问题标题】: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),但不返回实际数据。

【问题讨论】:

    标签: mysql stored-procedures prepared-statement


    【解决方案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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-01
      • 2018-12-16
      • 2020-12-17
      • 1970-01-01
      • 2018-10-20
      • 2018-11-23
      相关资源
      最近更新 更多