ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql – 我想获取两列特定列之间的列值

2019-07-27 19:15:32  阅读:178  来源: 互联网

标签:between sql mysql select case


我有一个表,我必须选择两列之间的列的值.假设column1,column2,column3位于table1中的column_start和column_end之间. column_start和column_end之间的列将根据需要添加.

表格1

column_start | column1 | column2 | column3 | column_end
-------------------------------------------------------
     1       |    2    |    3    |    4    |     5
     8       |    5    |    6    |    4    |     2

是否可以获取这些column1,column2,column3值?

输出:

 column1 | column2 | column3
----------------------------  
   2     |    3    |    4     
   5     |    6    |    4      

解决方法:

如果我理解正确,我认为你不能用一个查询来做到这一点.您可以尝试使用以下内容.添加了对代码的评论.

SET @schema = 'database_name_here'; -- Database name
SET @table = 'table1';              -- Table name
SET @startColumn = 'column_start';
SET @endColumn = 'column_end';

-- First get the position of both columns
SELECT ORDINAL_POSITION FROM information_schema.COLUMNS 
    WHERE table_schema=@schema AND table_name=@table AND 
    column_name=@startColumn INTO @StartPosition;

SELECT ORDINAL_POSITION FROM information_schema.COLUMNS 
    WHERE table_schema=@schema AND table_name=@table AND 
    column_name=@endColumn INTO @endPosition;

-- get the column names from the position
SELECT GROUP_CONCAT(column_name) from information_schema.COLUMNS
    where table_schema=@schema AND table_name=@table
    AND ORDINAL_POSITION > @StartPosition AND ORDINAL_POSITION < @endPosition 
    INTO @colname;

-- create a sql statement prepare and execute
SET @query = CONCAT('SELECT ',@colname,' FROM ', @table);
PREPARE stmt FROM @query;
EXECUTE stmt;

标签:between,sql,mysql,select,case
来源: https://codeday.me/bug/20190727/1556613.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有