首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是打印1到10的mysql查询?

问什么是打印1到10的mysql查询?
EN

Stack Overflow用户
提问于 2019-02-12 13:14:00
回答 4查看 1.8K关注 0票数 0

我知道有sql查询将计数从1打印到10,如下所示:

代码语言:javascript
复制
select rownum from dual where rownum<=10;

以同样的方式,我尝试在mysql中,但它抛出错误“未知列rownum In field list”。所以,如果有人给我提供mysql查询来执行同样的操作,那就太好了。提前谢谢。

EN

回答 4

Stack Overflow用户

发布于 2019-02-12 13:55:13

在MySQL 8+中,您可以使用递归CTE来执行此操作:

代码语言:javascript
复制
WITH RECURSIVE cte AS (
    SELECT 1 AS n
    UNION ALL
    SELECT n + 1 FROM cte WHERE n < 10
)
SELECT n FROM cte

输出:

代码语言:javascript
复制
n
1
2
3
4
5
6
7
8
9
10

Demo on dbfiddle

票数 2
EN

Stack Overflow用户

发布于 2019-02-12 13:51:07

There is no straightforward way to do this in MySQL.

MySQL不完全支持DUAL表。在某些不需要表的查询中,它可以用作占位符表,但它与其他数据库服务器中的DUAL表的行为不同--即使请求更多行,它也只返回一行:

代码语言:javascript
复制
mysql> SELECT ROW_NUMBER() OVER() FROM DUAL LIMIT 10;
+---------------------+
| row_number() over() |
+---------------------+
|                   1 |
+---------------------+

mysql> SELECT ROW_NUMBER() OVER() FROM DUAL WHERE ROW_NUMBER() OVER() < 10;
ERROR 3593 (HY000): You cannot use the window function 'row_number' in this context.'

(是的,在该错误消息的末尾确实有一个零散的撇号。)

有一种非常愚蠢的创建序列的方法:

代码语言:javascript
复制
mysql> SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5;
+---+
| 1 |
+---+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
+---+
5 rows in set (0.00 sec)

显然,对于大型序列来说,这会变得很笨拙,但这已经是现成的MySQL中最好的了。(一些分支,如MariaDB,有一些可以用于此目的的功能。)

票数 0
EN

Stack Overflow用户

发布于 2019-02-12 14:04:09

通过使用下面的查询,您可以得到1到10。

10位数的序列

代码语言:javascript
复制
select * from (select 1 x union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9 union select 10) A

https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=1f8b71c1fef4b8e0350f2b28eb15c3be

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54643238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档