Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从MySQL中选择表的最后N列_Mysql_Sql_Select - Fatal编程技术网

从MySQL中选择表的最后N列

从MySQL中选择表的最后N列,mysql,sql,select,Mysql,Sql,Select,我有超过35列的表,前20列是固定的,每个表中的列数不同。例如,我需要从表中选择最后10列,如何实现这一点?就像这个查询返回前20条记录一样 从表1中选择*限制10 我想对列执行相同的操作,我的意思是在查询中返回列名,然后在另一个查询中使用这些名称,例如: SELECT (SELECT column_name FROM INFORMATION_SCHEMA.Columns WHERE TABLE_NAME = 'table1' ) FROM table1; 你可以通过准备好的陈述来实现这一点。

我有超过35列的表,前20列是固定的,每个表中的列数不同。例如,我需要从表中选择最后10列,如何实现这一点?就像这个查询返回前20条记录一样

从表1中选择*限制10

我想对列执行相同的操作,我的意思是在查询中返回列名,然后在另一个查询中使用这些名称,例如:

SELECT (SELECT column_name FROM INFORMATION_SCHEMA.Columns WHERE TABLE_NAME = 'table1' ) FROM table1;

你可以通过准备好的陈述来实现这一点。您的查询将如下所示:

SELECT 
  CONCAT('SELECT ', 
         GROUP_CONCAT(COLUMN_NAME), 
         ' FROM test') 
FROM 
  (SELECT 
    COLUMN_NAME, 
    ORDINAL_POSITION 
  FROM 
    INFORMATION_SCHEMA.COLUMNS 
  WHERE 
    TABLE_SCHEMA='test' 
    AND 
    TABLE_NAME='test' 
  ORDER BY 
    ORDINAL_POSITION DESC LIMIT 10) AS ord_desc 
ORDER BY 
  ord_desc.ORDINAL_POSITION
-这将创建包含以下内容的SQL:

SELECT date,title FROM test 准备:

mysql> prepare stmt from @sql; Query OK, 0 rows affected (0.00 sec) mysql>从@sql准备stmt; 查询正常,0行受影响(0.00秒) 结果:

mysql> execute stmt; +------------+--------------+ | date | title | +------------+--------------+ | 2014-02-04 | my event 001 | | 2014-02-04 | my event 002 | | 2014-02-05 | my event 003 | | 2014-02-05 | my event 004 | | 2014-02-05 | my event 005 | | 2014-02-07 | my event 006 | | 2014-02-07 | my event 007 | +------------+--------------+ 7 rows in set (0.00 sec) mysql>执行stmt; +------------+--------------+ |日期|头衔| +------------+--------------+ |2014-02-04 |我的活动001| |2014-02-04 |我的活动002| |2014-02-05 |我的活动003| |2014-02-05 |我的活动004| |2014-02-05 |我的活动005| |2014-02-07 |我的事件006| |2014-02-07 |我的活动007| +------------+--------------+ 一组7行(0.00秒)
您需要动态查询。@HamletHakobyan这是什么?你能举个例子吗?试着看看这里 mysql> execute stmt; +------------+--------------+ | date | title | +------------+--------------+ | 2014-02-04 | my event 001 | | 2014-02-04 | my event 002 | | 2014-02-05 | my event 003 | | 2014-02-05 | my event 004 | | 2014-02-05 | my event 005 | | 2014-02-07 | my event 006 | | 2014-02-07 | my event 007 | +------------+--------------+ 7 rows in set (0.00 sec)