【SQL系列】从表中随机返回n行数据

简介: 【SQL系列】从表中随机返回n行数据

问题

你想从表中随机返回 n 行数据,且每次SQL执行时返回的行都不同。

解决方案

使用 DBMS 提供的返回随机值的内置函数。在 ORDER BY 子句中,使用该内置函数以随机的方式对行进行排序,然后返回指定行数。

DB2

select ename,job

from emp

order by rand() fetch first 5 rows only

Oracle

结合使用(内置包 DBMS_RANDOM 中的)内置函数 VALUE、ORDER BY 子句和内置函数 ROWNUM。

select *

from (select *

     from emp

     order by dbms_random.value())

where rownum <= 5

PostgreSQL

select ename,job

from emp

order by random() limit 5

MySQL

select ename,job

from emp

order by rand() limit 5

SQL Server

select top 5 ename,job

from emp

order by newid()

扩展

ORDER BY 子句可以根据函数的返回值来调整结果集的排列顺序。这些解决方案都在 ORDER BY 子句中的函数执行后限制返回的行数。即便你使用的不是 Oracle,仔细研究 Oracle 解决方案也会有所帮助,因为它展示了其他解决方案在幕后发生的情况。

在 ORDER BY 子句中,使用函数和使用数值常量导致的排序方式是不同的,明白这一点很重要。在 ORDER BY 子句中指定数值常量时,要求根据 SELECT 子句中相应位置的列进行排序。而在 ORDER BY 子句中指定函数时,要求对每行执行该函数,并根据函数的结果进行排序。


点个赞吧,这对我非常重要!

目录
相关文章
|
6天前
|
SQL 存储 分布式计算
|
10天前
|
SQL 物联网 数据处理
"颠覆传统,Hive SQL与Flink激情碰撞!解锁流批一体数据处理新纪元,让数据决策力瞬间爆表,你准备好了吗?"
【8月更文挑战第9天】数据时代,实时性和准确性至关重要。传统上,批处理与流处理各司其职,但Apache Flink打破了这一界限,尤其Flink与Hive SQL的结合,开创了流批一体的数据处理新时代。这不仅简化了数据处理流程,还极大提升了效率和灵活性。例如,通过Flink SQL,可以轻松实现流数据与批数据的融合分析,无需在两者间切换。这种融合不仅降低了技术门槛,还为企业提供了更强大的数据支持,无论是在金融、电商还是物联网领域,都将发挥巨大作用。
30 6
|
10天前
|
SQL 安全 数据处理
揭秘数据脱敏神器:Flink SQL的神秘力量,守护你的数据宝藏!
【8月更文挑战第9天】在大数据时代,Apache Flink以其强大的流处理能力脱颖而出,而Flink SQL则为数据处理带来了灵活性。本文介绍如何运用Flink SQL实现数据脱敏——一项关键的隐私保护技术。通过内置函数与表达式,在SQL查询中加入脱敏逻辑,可有效处理敏感信息,如个人身份与财务数据,以符合GDPR等数据保护法规。示例展示了如何对信用卡号进行脱敏,采用`CASE`语句检查并替换敏感数据。此外,Flink SQL支持自定义函数,适用于更复杂的脱敏需求。掌握此技能对于保障数据安全至关重要。
31 5
|
12天前
|
SQL 关系型数据库 MySQL
“震撼揭秘!Flink CDC如何轻松实现SQL Server到MySQL的实时数据同步?一招在手,数据无忧!”
【8月更文挑战第7天】随着大数据技术的发展,实时数据同步变得至关重要。Apache Flink作为高性能流处理框架,在实时数据处理领域扮演着核心角色。Flink CDC(Change Data Capture)组件的加入,使得数据同步更为高效。本文介绍如何使用Flink CDC实现从SQL Server到MySQL的实时数据同步,并提供示例代码。首先确保SQL Server启用了CDC功能,接着在Flink环境中引入相关连接器。通过定义源表与目标表,并执行简单的`INSERT INTO SELECT`语句,即可完成数据同步。
38 1
|
19天前
|
SQL 关系型数据库 数据库
|
19天前
|
SQL 关系型数据库 数据库
|
1天前
|
SQL 移动开发 Oracle
SQL查询连续六天数据记录的技巧与方法
在数据库查询中,实现针对连续几天(如连续六天)的数据筛选是一个常见且稍具挑战性的任务
|
1天前
|
SQL 数据库 索引
SQL语言入门:如何表达你的数据需求
在数据库的世界里,SQL(Structured Query Language)是一种至关重要的语言,它允许用户与数据库进行交互,执行数据的查询、更新、插入和删除等操作
|
4天前
|
SQL 存储 数据管理
解锁 SQL Server 2022的时间序列数据功能
【8月更文挑战第14天】解锁SQL Server 2022的时间序列数据功能需先确认版本支持;接着创建数据库与含时间列的表,如`TimeSeriesData`;然后插入时间序列数据;利用内置函数如窗口函数计算移动平均等统计;最后针对大数据量配置索引及分区以优化性能。这流程助力高效处理时间序列数据。
|
6天前
|
SQL
SQL SERVER数据分组后取第一条数据——PARTITION BY
SQL SERVER数据分组后取第一条数据——PARTITION BY
12 0