iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >SQL查询的技巧
  • 721
分享到

SQL查询的技巧

2024-04-02 19:04:59 721人浏览 独家记忆
摘要

这篇文章主要介绍sql查询的技巧,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、行列转换问题:假设有张学生成绩表(tb)如下:想变成(得到如下结果): 代码:WITH t

这篇文章主要介绍sql查询的技巧,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

1、行列转换

问题:假设有张学生成绩表(tb)如下:

SQL查询的技巧

想变成(得到如下结果):

SQL查询的技巧

代码:

WITH tb(姓名,课程,分数) AS
(
SELECT N'张三',N'语文',74
UNION ALL
SELECT N'张三',N'数学',83
UNioN ALL
SELECT N'张三',N'物理',93
UNION ALL
SELECT N'李四',N'语文',79
UNION ALL
SELECT N'李四',N'数学',86
UNION ALL
SELECT N'李四',N'物理',88
)

SELECT 姓名 ,
MAX(CASE 课程 WHEN '语文' THEN 分数 ELSE 0 END) 语文,
MAX(CASE 课程 WHEN '数学' THEN 分数 ELSE 0 END) 数学,
MAX(CASE 课程 WHEN '物理' THEN 分数 ELSE 0 END) 物理
FROM tb GROUP BY  姓名

2、分页

方案一:利用NOT IN和SELECT TOP分页语句形式

SELECT TOP 10 * FROM TestTable
WHERE ID NOT IN
(SELECT TOP 20 ID FROM TestTable ORDER BY ID)
ORDER BY ID

方案二:利用ID大于多少和SELECT TOP分页语句形式

SELECT TOP 10 * FROM TestTable
WHERE ID > (
SELECT MAX(id) FROM 
(SELECT TOP 20 id FROM 
TestTable ORDER BY id) AS T)
ORDER BY ID

方案三:利用SQL Server中的特性ROW_NUMBER进行分页

SELECT * FROM (
  SELECT ROW_NUMBER() OVER(ORDER BY ID DESC) AS ROWID,*
  FROM TestTable
) AS mytable where ROWID between 21 and 40

3、结果合并

合并重复行

 SELECT * FROM A
UNION
SELECT * FROM B

不合并重复行

SELECT * FROM A
UNION ALL
SELECT * FROM B

4、随机排序

SELECT * FROM TestTable ORDER BY NEWID()

还可以结合TOP取随机的前N条记录

SELECT TOP 100 * FROM TestTable ORDER BY NEWID()

5、以任意符号分隔取两边数据

例如我们以逗号(,)来分割数据,将如下数据

SQL查询的技巧

分割成如下图所示:

SQL查询的技巧

SELECT R,
CASE WHEN  CHARINDEX(',',R)>1 THEN  LEFT(R,CHARINDEX(',',R)-1) ELSE NULL END AS R1 ,
CASE WHEN CHARINDEX(',',R)>1 THEN RIGHT(R,(LEN(R) - CHARINDEX(',',R))) ELSE NULL END AS R2
FROM  t

代码较长,我们对代码进行拆分来理解:

SELECT  CHARINDEX(',',',') --结果是1
SELECT  CHARINDEX(',','NULL') --结果是0
SELECT  CHARINDEX(',','') --结果是0
SELECT  CHARINDEX(',','A,B') --结果是2
SELECT  LEN('A,B') --结果是3
SELECT  LEN('A,B') - CHARINDEX(',','A,B') --结果是3-2=1
SELECT  RIGHT('A,B',( LEN('A,B') - CHARINDEX(',','A,B'))) --结果是 B

最后一步我们将'A,B'拆分出来了B,同理A我们也可以用类似的方法获取到。

6、WAITFOR延时执行

例 等待1 小时2 分零3 秒后才执行SELECT 语句

WaiTFOR DELAY '01:02:03'
SELECT * FROM Employee

其中 DELAY是在延时多长时间后才开始执行。

例 等到晚上11 点零8 分后才执行SELECT 语句

WAITFOR TIME '23:08:00'
SELECT * FROM Employee

其中TIME是等到具体某个时刻才开始执行

以上是“SQL查询的技巧”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: SQL查询的技巧

本文链接: https://www.lsjlt.com/news/55090.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQL查询的技巧
    这篇文章主要介绍SQL查询的技巧,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、行列转换问题:假设有张学生成绩表(tb)如下:想变成(得到如下结果): 代码:WITH t...
    99+
    2022-10-18
  • 有哪些SQL查询小技巧
    本篇内容介绍了“有哪些SQL查询小技巧”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 1、行列转...
    99+
    2022-10-18
  • MySQL 查询技巧
    1)获取指定偏移量的数据SELECT * FROM alarm LIMIT 0,9; SELECT * FROM alarm LIMIT 9 OFFSET 0; (在mysql 5以后支持这...
    99+
    2022-10-18
  • 如何使用SQL查询视图,Postico使用技巧分享~
    Postico凭借着简单易用的操作界面深受专业人员和新手的喜爱,小编也整理一点小技巧分享给大家,通过一次编辑多行节省时间,是你工作的好帮手,快来一起看看吧~ 如何使用SQL查询视图,Postico使用技...
    99+
    2022-10-18
  • MySQL 分页查询的优化技巧
    在有分页查询的应用中,包括 LIMIT 和 OFFSET 的查询十分常见,而且几乎每个都会有一个 ORDER BY 子句。如果使用索引排序的话将对性能优化十分有帮助,否则服务端需要做很多文件排序。 一个高频的问题...
    99+
    2022-05-20
    MySQL 分页查询 MySQL 分页查询优化
  • 必备 SQL 查询优化技巧提升网站访问速度
    在这篇文章中,我将介绍如何识别导致性能出现问题的查询,如何找出它们的问题所在,以及快速修复这些问题和其他加快查询速度的方法。 你一定知道,一个快速访问的网站能让用户喜欢,可以帮助网站从Google 上提高...
    99+
    2022-10-18
  • C#连接SQL数据库和查询数据功能的操作技巧
    大数据时代在编程可能需要用到一些文本内容,不可能全部写到代码里,不好更改,用户也不方便使用 所以需要用到我们的数据库来保存这些数据,直接更改数据 SQL: 下载地址:https://...
    99+
    2022-11-12
  • Python模型聚合查询\Q查询\F查询\分组查询操作技巧解析
    目录模型中的一些查询操作:1.聚合查询:aggregate()是QuerySet 的一个终止子句2.Q查询: 如果你需要执行更复杂的查询(例如OR语句)3.F查询: (查询的是一整列...
    99+
    2022-11-12
  • MySQL单表查询的技巧有哪些
    这篇文章主要讲解了“MySQL单表查询的技巧有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL单表查询的技巧有哪些”吧!在我们对数据进行操作时,...
    99+
    2022-12-17
    mysql
  • 查询数据的setFetchMode()技巧怎么用
    这篇文章主要介绍查询数据的setFetchMode()技巧怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!PDOStatement::fetch()PDOStatement::fetch  &...
    99+
    2023-06-09
  • PHP查询字符串的技巧分享
    这篇文章主要介绍“PHP查询字符串的技巧分享”,在日常操作中,相信很多人在PHP查询字符串的技巧分享问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP查询字符串的技巧分享”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-17
  • PHP中的多表关联查询技巧
    PHP中的多表关联查询技巧关联查询是数据库查询的重要部分,特别是当你需要展示多个相关数据库表内的数据时。在PHP应用程序中,在使用MySQL等数据库时,多表关联查询经常会用到。多表关联的含义是,将一个表中的数据与另一个或多个表中的数据进行比...
    99+
    2023-05-24
    技巧 多表查询 关联查询
  • SQL查询连续号码段的巧妙解法
    昨天在itpub看到这个帖子, 问题觉得有意思,, 就仔细想了想. 也给出了一种解决办法..:-) 问题求助,请高手指点.. 我有一个表结构,fphm,kshm2014,000000...
    99+
    2022-11-15
    连续号码段
  • 30个mysql千万级大数据SQL查询优化技巧详解
    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导...
    99+
    2022-10-18
  • 10个Elasticsearch查询的实用技巧分享
    目录前言示例1. 匹配多个词语2. 匹配某个字段中的任意一个词3. 匹配某个字段中的词语前缀4. 匹配某个字段中的词语通配符5. 匹配某个字段中的词语模糊匹配6. 匹配某个字段中的词...
    99+
    2023-05-16
    Elasticsearch查询技巧 Elasticsearch查询
  • 一文分析Go语言的查询技巧
    Golang查询:掌握Go语言的查询技巧近年来,Golang已经成为了web开发、服务器端编程等领域的热门语言。在实际开发过程中,经常会有需要对大量数据进行查询的情况。因此,掌握Golang查询技巧是非常重要的。本文将探讨Golang的查询...
    99+
    2023-05-14
  • sql查询之模糊查询
    like 这里可以参照一下菜鸟教程、mysql like一般用于字符串查询%代表半匹配查询 SELECT * FROM studentWHERE `name` = "孙悟空";SELE...
    99+
    2023-09-03
    sql 数据库 mysql
  • mysql语句中有哪些查询技巧
    这篇文章给大家分享的是有关mysql语句中有哪些查询技巧的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。mysql语句查询技巧:1、比较运算符能用 “=”就不用“<>”...
    99+
    2022-10-18
  • SQL数据查询——连接查询
    文章目录 一、等值和非等值连接查询1.等值连接查询2.非等值连接查询 二、自连接与非自连接三、内连接与外连接1.内连接2.外连接使用左外连接还是右外连接?满外连接 四、UNIO&...
    99+
    2023-10-26
    sql 数据库 mysql oracle
  • mysql使用技巧 行类视图子查询
    查找描述信息中包括robot的电影对应的分类名称以及电影数目,而且还需要该分类对应电影数量>=5部 film表为电影表,category表为电影分类表,film_category表为电影表与电影分类表的中间表(多对多的中间表) ...
    99+
    2019-04-01
    mysql使用技巧 行类视图子查询
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作