【问题标题】:Mysql Select Specific Column with N ColumnMysql选择具有N列的特定列
【发布时间】:2020-07-28 04:00:00
【问题描述】:

假设我有 'db_institute' 和 'tb_data' 有 39 列

This Answers 从最后 10 列中选择时,我想在查询中添加额外的列

我准备语句的时候结果是这样的

SELECT Name,lastcolumn1,...,lastcolumn10 from tb_data

这是我失败的尝试

    SELECT Name,
      CONCAT('SELECT ', 
             GROUP_CONCAT(COLUMN_NAME), 
             ' FROM 'tb_data') 
    FROM 
      (SELECT 
        COLUMN_NAME, 
        ORDINAL_POSITION 
      FROM 
        INFORMATION_SCHEMA.COLUMNS 
      WHERE 
        TABLE_SCHEMA='db_institute' 
        AND 
        TABLE_NAME='tb_data' 
      ORDER BY 
        ORDINAL_POSITION DESC LIMIT 10) AS ord_desc 
    ORDER BY 
      ord_desc.ORDINAL_POSITION
  into @sql

哪个结果错误

Unknown column 'Name' in 'field list'

【问题讨论】:

  • 确保没有错字 - ' FROM 'tb_data' 附近有太多 ' 引号。如果错误仍然存​​在,请告诉我们。还有为什么你有SELECT Name 而你却没有提到Name 列,也许删除它?
  • @BoykeFerdinandes 我想用 column(Name) 选择最后 10 列,以便选择 11 列
  • 您希望从SELECT Name 看到什么价值?您提到的链接应涵盖最后 10 列
  • 哦 Name 来自 tb_data ?一开始我的不好没有让你失望,我会尽快发布答案

标签: mysql


【解决方案1】:

您的参考资料已经正确。试试这个

SELECT 
  CONCAT('SELECT Franchisee, ', GROUP_CONCAT(COLUMN_NAME), ' FROM product_staging') # change product_staging to your table name and Franchisee to Name
FROM 
  (SELECT 
    COLUMN_NAME, 
    ORDINAL_POSITION 
  FROM 
    INFORMATION_SCHEMA.COLUMNS 
  WHERE 
    TABLE_SCHEMA='myob' # change it to your schema name
    AND 
    TABLE_NAME='product_staging' # change it to your table name
  ORDER BY 
    ORDINAL_POSITION DESC LIMIT 10) AS ord_desc 
ORDER BY 
  ord_desc.ORDINAL_POSITION
INTO @qry;
PREPARE stmt1 FROM @qry;
EXECUTE stmt1;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2011-02-27
    • 2013-03-25
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多