今天遇到了不熟练(不会)的查询题目

  • 回来自己又做了一下,如下

建表语句


-- Table structure for score
-- ----------------------------
DROP TABLE IF EXISTS score;
CREATE TABLE score (
id int(11) DEFAULT NULL,
sno int(11) DEFAULT NULL,
name varchar(255) DEFAULT NULL,
subject varchar(255) DEFAULT NULL,
score varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


-- Records of score
-- ----------------------------
INSERT INTO score VALUES ('1', '201201', '小明', 'math', '90');
INSERT INTO score VALUES ('2', '201202', '小李', 'math', '99');
INSERT INTO score VALUES ('3', '201203', '小红', 'math', '43');
INSERT INTO score VALUES ('4', '201201', '小明', 'en', '66');
INSERT INTO score VALUES ('5', '201202', '小李', 'en', '56');
INSERT INTO score VALUES ('6', '201203', '小红', 'en', '88');
INSERT INTO score VALUES ('7', '201201', '小明', 'computer', '99');
INSERT INTO score VALUES ('8', '201202', '小李', 'computer', '65');
INSERT INTO score VALUES ('9', '201203', '小红', 'computer', '67');
INSERT INTO score VALUES ('11', '201204', '小白', 'sss', '99');
INSERT INTO score VALUES ('11111', '201203', '小红', 'computer', '67');

  • 题目1:找到所有分数都及格(>=60)的学生。

    1. 查询有科目分数小于 60 的, 然后 not in 即可
      select name from score where sno not in
      (select s.sno from score s where s.score < 60) GROUP BY sno

    2. not exists 写法
      select name from score s1 where not exists
      (select 1 from score s where s.score < 60 and s1.sno = s.sno) GROUP BY s1.sno

    3. having 筛选
      select * from score s GROUP BY s.sno having min(s.score) >= 60

  • 题目2:表中有冗余记录,如何删除?如下图:

分析:找到该数据对应的id,根据id删除!

select s.id from score s group by s.sno,s.name,s.subject,s.score -- 此结果不包含需要删除的id
本以为是:delete from score where id not in (select s.id from score s group by s.sno,s.name,s.subject,s.score )

  • 结果毫不犹豫的抛出错误:
  • 查明原因,mysql认为delete/update 跟 子句里面select到的不能是一张表

  • 做出改进(表起别名,按照需要删掉新插入的或者后插入的)

delete from score where id not in (select id from (select min(id) id from score s group by sno,name,subject,score )t)

笔试题-sql语句的更多相关文章

  1. SQLServer 常见SQL笔试题之语句操作题详解

    SqlServer 常见SQL笔试题之语句操作题详解 by:授客 QQ:1033553122 测试数据库 CREATE DATABASE handWriting ON PRIMARY ( name = ...

  2. 009 面试题 SQL语句各部分的执行顺序

    SQL语句各部分的执行顺序 select distinct...from t1 (left/right) join t2 on t1.xx=t2.xx where t1.xx=? and t2.xx= ...

  3. 几个SQL语句笔试题

    1.表A和表B具有完全相同的结构,查出表A中有但表B中没有的数据: create table A( id int , name ), password ) ); create table B( id ...

  4. 笔试题: 数据库 已看1 一些关键的sql语句练习 和选择题 有用 sql语句练习 挺好

    一.     选择题 1.SQL语言是( C )语言. A.层次数据库 B.网络数据库 C.关系数据库 D.非数据库     redis 是 3.如果在where子句中有两个条件要同时满足,应该用哪个 ...

  5. 面试题 | 数据库笔试题集合·之·SQL语句(2)

    第2章 SQL 语句 2.1 选择2.1.1 DELETE FROM S WHERE 年龄>60 语句的功能是( A ) A.从 S 表中彻底删除年龄大于 60 岁的记录B.S 表中年龄大于 6 ...

  6. 数据库笔试题(经典select语句的用法)【转载】

    原文地址:数据库笔试题(经典select语句的用法)作者:lily 问题描述: 为管理岗位业务培训信息,建立3个表: S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号.学员姓名.所 ...

  7. [SQL]数据分析SQL笔试题

    SQL笔试题 1.请简单写出left join和join的用法区别(可举例说明): 2.求出订单表(order表)中每个客户(custid)的最近一次购买日期(要求:按custid降序排列,trans ...

  8. sql语句 面试题

    ql语句 面试题   自动编号   学号   姓名 课程编号 课程名称 分数 1        2005001  张三  0001      数学    69 2        2005002  李四 ...

  9. sql笔试题

    笔试题1: 1.select * from tablex where name = "张*" order by age  默认升序      select * from table ...

随机推荐

  1. xhtml 的三种 doctype

    {1}文档宣告 <!ODCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 [there]//EN" "http://www.w4org/TR/xhtml1/DTD/ ...

  2. 2016-2017-2 《Java程序设计》第5周学习总结

    学号 2016-2017-2 <Java程序设计>第5周学习总结 教材部分学习内容总结 第八章: 一.语法与继承架构 使用try.catch: •执行流程 1.尝试执行try区块中程序代码 ...

  3. TensorFlow 之 手写数字识别MNIST

    官方文档: MNIST For ML Beginners - https://www.tensorflow.org/get_started/mnist/beginners Deep MNIST for ...

  4. 使用libcurl开源库和Duilib做的下载文件并显示进度条的小工具

    转载:http://blog.csdn.net/mfcing/article/details/43603525 转载:http://blog.csdn.net/infoworld/article/de ...

  5. 关于Session的概念和测试点

    Session概要 Session 是用于保持状态的基于 Web 服务器的方法,在 Web 服务器上保持用户的状态信息供在任何时间从任何页访问. Session 允许通过将对象存储在 Web 服务器的 ...

  6. fatal One or more refs for names blocks change upload

    前言 今天在提代码时,发现push不到gerrit仓库了,十分的奇怪,和同事沟通后发现,同事可以直接git push origin master而且也可以合并,都是没有问题的,但是就是在gerrit上 ...

  7. PMBOK十大知识领域是什么?

    PMBOK十大知识领域是:整合管理.范围管理.时间管理.成本管理.质量管理.人力资源管理.沟通管理.风险管理.采购管理.干系人管理. 各用一句话概括项目管理知识体系十大知识领域: 1.整合管理:其作用 ...

  8. linux下如何源码安装expect

    1.作用 自动交互.比如如果用ssh登陆服务器,每次都输入密码,然而你觉得麻烦,那你就可以使用expect来做自动交互,这样的话就不用每次都输入密码 2.依赖 依赖tcl 3.获取源码 wget ht ...

  9. POJ 2425 A Chess Game(有向图SG函数)题解

    题意:给一个有向图,然后个m颗石头放在图上的几个点上,每次只能移动一步,如果不能移动者败 思路:dfs打表sg函数,然后求异或和 代码: #include<queue> #include& ...

  10. shell:遍历目录和子目录的所有文件及匹配文件内容到日志

    过滤文件内网 #!/bin/bash function getdir(){ ` do dir_or_file=$"/"$element if [ -d $dir_or_file ] ...