从MySQL中选择表的最后N列
我有超过35列的表,前20列是固定的,每个表中的列数不同。例如,我需要从表中选择最后10列,如何实现这一点?就像这个查询返回前20条记录一样从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; 你可以通过准备好的陈述来实现这一点。
从表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)