• sql 限制返回的行数、从表中随机返回n行数据、将NULL转换为实际值


    限制返回的行数

    1. 问题
      你想限制查询中返回的行数。你不关心顺序,只要返回的行数是指定的(n)。
    2. 解决方案
      使用数据库提供的内置函数来控制返回的行数。
      DB2
      在 DB2 中,使用 FETCH FIRST 子句。
     select *
    from emp fetch first 5 rows only
    
    • 1
    • 2

    MySQL 和 PostgreSQL
    在 MySQL 和 PostgreSQL 中,使用 LIMIT 来限制返回的行数。

     select *
     from emp limit 5
    
    • 1
    • 2

    Oracle
    在 Oracle 中,要限制返回的行数,可以在 WHERE 子句中对 ROWNUM 进行限制。

     select *
     from emp
     where rownum <= 5
    
    • 1
    • 2
    • 3

    SQL Server
    在 SQL Server 中,使用关键字 TOP 来限制返回的行数。

     select top 5 *
     from emp
    
    • 1
    • 2

    从表中随机返回n行数据

    1. 问题
      你想从表中随机返回 n 行数据。为此,你想修改下面的语句,使其返回 5 行数据,且每次
      执行时返回的行都不同。
    select ename, job
     from emp
    
    • 1
    • 2
    1. 解决方案
      使用 DBMS 提供的返回随机值的内置函数。在 ORDER BY 子句中,使用该内置函数以随机
      的方式对行进行排序,然后使用上一节介绍的方法来限制返回的行数。
      DB2
      结合使用内置函数 RAND、ORDER BY 和 FETCH。
     select ename,job
     from emp
     order by rand() fetch first 5 rows only
    
    • 1
    • 2
    • 3

    MySQL
    结合使用内置函数 RAND、LIMIT 和 ORDER BY。

     select ename,job
     from emp
     order by rand() limit 5
    
    • 1
    • 2
    • 3

    PostgreSQL
    结合使用内置函数 RANDOM、LIMIT 和 ORDER BY。
    检索记录 | 9

     select ename,job
     from emp
     order by random() limit 5
    
    • 1
    • 2
    • 3

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

     select *
     from (
     select ename, job
     from emp
     order by dbms_random.value()
     )
     where rownum <= 5
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    SQL Server
    结合使用内置函数 NEWID、TOP 和 ORDER BY 来返回随机的结果集。

     select top 5 ename,job
     from emp
    ## 标题 order by newid()
    
    • 1
    • 2
    • 3

    **

    将NULL转换为实际值

    **

    1. 问题
      有些列为 NULL,但你不想返回 NULL,而想返回非 NULL 值。
    2. 解决方案
      使用函数 COALESCE 将 NULL 值替换为实际值。
     select coalesce(comm,0)
     from emp
    
    • 1
    • 2
    1. 讨论
      函数 COALESCE 可以将一个或多个值作为参数,并返回参数列表中的第一个非 NULL 值。在
      上述解决方案中,如果 COMM 不为 NULL,就返回它,否则就返回 0。
      处理 NULL 值时,最好利用 DBMS 提供的内置功能。在很多情况下,有多个函数可以很好
      地完成这项任务,但 COALESCE 在所有 DBMS 中都管用。另外,在所有 DBMS 中,都可以
      使用 CASE 来完成这项任务。
    select case
     when comm is not null then comm
     else 0
     end
     from emp
    
    • 1
    • 2
    • 3
    • 4
    • 5

    虽然可以使用 CASE 将 NULL 值转换为实际值,但使用 COALESCE 更容易且更简洁

  • 相关阅读:
    切记:Python迭代器只可以读取一次,忽略会有意想不到的麻烦。
    Python(PySpark案例实战)
    关于大数据技术的学习
    Android 理解/生成/使用/查看 签名(V1-V4)
    WinXP内核驱动调试
    SAP SEGW 事物码里的导航属性(Navigation Property) 和 EntitySet 使用方法
    Shiro学习(10)Session管理
    基于MCMC的交通量逆建模(Matlab代码实现)
    Java,Linux,Mysql小白入门
    mysql数据库面试相关问题
  • 原文地址:https://blog.csdn.net/u014270566/article/details/127942359