一、关联子查询-查日期最新列

  前天在工作中遇到一条非常有用的SQL语句,想了好久愣是没搞出来。今天将这个问题模拟出来:先看表

  

  需求是,对于每个人,仅显示时间最新的那一条记录。

  答案如下:

select * from record as a
where not exists (select null from record as b where a.Name = b.Name and a.CreateTime < b.CreateTime)

  结果如下:

  

  这个问题的关键难点在于,既要去除重复,又要显示多个列。这样一来distinct就无效了,groupby又无效了。

  写成上面的样子,可能比较难看,但是写成下面这个样子应该就看得懂了:

select * from record as a
where not exists
(select * from record as b where a.Name = b.Name and b.CreateTime > a.CreateTime)

  整条SQL语句的意思可以描述为,查询表a的数据,当名字相同且存在时间更加新的,则不要这条(一直排除到时间是最新的)。exists运算符,只关注子SQL有没有结果集返回,因此在exists里select * 与 select null意义一样,也就是说,如果名字相等,且有创建时间比较新的,则不要这条,直到最新的。

  sql查询语句以select关键字开始,由各种字句组成。select语句的完整语法较复杂,常见的sql查询语句的语法结构如下。

  关联子查询只是此问题的其中一个解法,更多的解决方案在这个地址有:http://www.cnblogs.com/kissdodog/p/3365789.html

二、distinct关键字用于聚合函数中

  distinct关键字也能够用于聚合函数里面,意为在聚合之前将所有的重复行先排除,所以返回的结果会更少:

  select count(distinct person_name)

三、CASE...WHEN基于列的逻辑表达式

  关于这个东西,特别写了篇文章,地址如下:http://www.cnblogs.com/kissdodog/p/3154371.html

  现在来写个实例:先给出一张表:

    

    要求查出以下信息:

    

     SQL语句如下:

select Team,Rq, sum(case when winlose='胜' then 1 else 0 end) as 胜,sum(case when winlose='负' then 1 else 0 end) as 负
from test
group by Rq,Team
having Team = '曼联'

    再来一个,一张表只有Id,Sex两个字段,要求用一条SQL语句将Sex字段的'男'变'女','女'变'男'。

     

update table_1
set sex = (case when sex='男' then '女' when sex='女' then '男' end)

    执行完SQL语句后,结果如下:

    

    再来一个有一张表,里面有3个字段:语文,数学,英语。其中有3条记录分别表示语文70分,数学80分,英语58分,请用一条sql语句查询出这三条记录大于或等于80表示优秀,大于或等于60表示及格,小于60分表示不及格。

    SQL语句如下:

select Id,
(case
when chinese >= 80 then '优秀'
when chinese >= 60 then '及格'
else '不及格'
end) as 语文,
(case
when math >= 80 then '优秀'
when math >= 60 then '及格'
else '不及格'
end) as 数学,
(case
when english >= 80 then '优秀'
when english >= 60 then '及格'
else '不及格'
end) as 英语
from fenshu

疑难杂症 - SQL语句整理的更多相关文章

  1. 一个项目涉及到的50个Sql语句(整理版)

    /* 标题:一个项目涉及到的50个Sql语句(整理版) 说明:以下五十个语句都按照测试数据进行过测试,最好每次只单独运行一个语句. */ --1.学生表Student(S,Sname,Sage,Sse ...

  2. 常用sql语句整理:mysql

    ## 常用sql语句整理:mysql1. 增- 增加一张表```CREATE TABLE `table_name`(  ...  )ENGINE=InnoDB DEFAULT CHARSET=utf8 ...

  3. Oracle数据库常用的Sql语句整理

    Oracle数据库常用的Sql语句整理 查看当前用户的缺省表空间 : select username,default_tablespace from user_users; 2.查看用户下所有的表 : ...

  4. 常用的一些SQL语句整理,也许有你想要的。

    本篇文章是对一些常用的sql语句进行了总结与分析,需要的朋友参考下,也许会有你需要的. 1.SQL行列转换 问题:假设有张学生成绩表(tb)如下:姓名 课程 分数张三 语文 74张三 数学 83张三 ...

  5. SQL语句整理(二) 数据定义语言DDL

    前言: 这是我学数据库时整理的学习资料,基本上包括了所以的SQL语句的知识点. 我的教材是人大王珊老师的<数据库系统概论>. 因为是手打的,所以会用一些细节打错了,但都挺明显也不多(考完试 ...

  6. SQL语句整理(一) 数据库查询语言DQL

    前言: 这是我学数据库时整理的学习资料,基本上包括了所以的SQL语句的知识点. 我的教材是人大王珊老师的<数据库系统概论>. 因为是手打的,所以会用一些细节打错了,但都挺明显也不多(考完试 ...

  7. EBS系统管理常用SQL语句整理汇总(参考网上资料&其他人博客)

    --1查找系统用户基本信息 SELECT user_id, user_name, description, employeE_id, person_party_id FROM fnd_user; -- ...

  8. MySQL的一些常用的SQL语句整理

    安装MySQL有两种的方式,一种是解压版本,但是需要配置环境变量,相对而言比较麻烦.所以我们一般采取第二种方式,那就是到MySQL的官网上下载安装版.这样就会省去很多麻烦,在这里我就不再详细的介绍具体 ...

  9. MSSQL注入常用SQL语句整理

    很多情况下使用工具对mssql注入并不完善,所以我们就需要手工注入,一下是本人收集的一些mssql的sql语句. 手工MSSQL注入常用SQL语句 and exists (select * from ...

随机推荐

  1. (转)【ASP.NET Web API】Authentication with OWIN

    概述 本文说明了如何使用 OWIN 来实现 ASP.NET Web API 的验证功能,以及在客户端与服务器的交互过程中,避免重复提交用户名和密码的机制. 客户端可以分为两类: JavaScript: ...

  2. Lambda应用设计模式

    前言 在使用 Lambda 表达式时,我们常会碰到一些典型的应用场景,而从常用场景中抽取出来的应用方式可以描述为应用模式.这些模式可能不全是新的模式,有的参考自 JavaScript 的设计模式,但至 ...

  3. Gradle中使用idea插件的一些实践

    如果你的项目使用了Gradle作为构建工具,那么你一定要使用Gradle来自动生成IDE的项目文件,无需再手动的将源代码导入到你的IDE中去了. 如果你使用的是eclipse,可以在build.gra ...

  4. [Android] Android Sutdio on Surface Pro 3

    Install Android Studio http://www.android-studio.org/index.php/download/androidstudio-download-baidu ...

  5. 使用Alcatraz来管理Xcode插件

    Alcatraz 是一个帮你管理 Xcode 插件.模版以及颜色配置的工具.它可以直接集成到 Xcode 的图形界面中,让你感觉就像在使用 Xcode 自带的功能一样. 安装和删除 使用如下的命令行来 ...

  6. pl/sql死锁oracle

    http://jingyan.baidu.com/album/3ea51489eb65b152e61bba8b.html?picindex=2

  7. Linux命令入门

    // 查看日历cal // 修改密码passwd // 查看目录和文件ls -lls // 查看当前用户信息whoami // 查看当前在线用户userswho 在Linux中,可以使用 vi 编辑器 ...

  8. adb devices指令实例讲解

    在讲这个指令之前,我首先启动了一个名称为“Galaxy_Nexus_4.4.2”的手机模拟器(有时我们也管其叫安卓虚拟设备),并且通过USB数据线将我的手机设备和PC进行了连接,而后我应用“Andro ...

  9. SIFT 特征提取算法总结

    原文链接:http://www.cnblogs.com/cfantaisie/archive/2011/06/14/2080917.html   主要步骤 1).尺度空间的生成: 2).检测尺度空间极 ...

  10. java string转为xml

    一.使用最原始的javax.xml.parsers,标准的jdk api // 字符串转XML String xmlStr = \"......\"; StringReader s ...