(-1)写在前面

文章参考http://blog.sina.com.cn/willcaty。

针对其中的一道练习题想出两种其他的答案,希望网友给出更多回答。

(0) 基础数据

student表

+-----+--------+------+-------+------------+--------------+

| id  | name   | sex  | birth | department | address      |

+-----+--------+------+-------+------------+--------------+

| 901 | 张老大 | 男   |  1985 | 计算机系   | 北京市海淀区 |

| 904 | 李四   | 男   |  1990 | 英语系     | 辽宁省阜新市 |

| 905 | 王五   | 女   |  1991 | 英语系     | 福建省厦门市 |

| 906 | 王六   | 男   |  1988 | 计算机系   | 湖南省衡阳市 |

+-----+--------+------+-------+------------+--------------+

score表

+----+--------+-----------+-------+

| Id | Stu_id | C_Name    | Grade |

+----+--------+-----------+-------+

| 23 |    901 | 计算机    |    98 |

| 24 |    901 | 英语      |    80 |

| 25 |    902 | 计算机    |    65 |

| 26 |    902 | 中文      |    88 |

| 27 |    903 | 中文      |    95 |

| 28 |    904 | 计算机    |    70 |

| 29 |    904 | 英语      |    92 |

| 30 |    905 | 英语      |    94 |

| 31 |    906 | 计算机    |    90 |

| 32 |    906 | 英语      |    85 |

+----+--------+-----------+-------+

(1)查询同时参加计算机和英语考试的学生的信息

方式一:

SELECT a.* FROM student a ,score b ,score c

WHERE a.id=b.stu_id

AND b.c_name='计算机'

AND a.id=c.stu_id

AND c.c_name='英语';

方式二:

SELECT *  FROM student

WHERE id =ANY

( SELECT stu_id FROM score

WHERE stu_id IN (

SELECT stu_id FROM

score WHERE c_name=  '计算机')

AND c_name= '英语' );

方式三:

select * from student where id in(

select s.stu_id from (select stu_id from score where c_name = '计算机') s

(select stu_id from score where c_name='英语') as t where s.stu_id=t.stu_id)

方式四:

select * from student where id in (

select stu_id from score where c_name ='计算机' and stu_id in(

select stu_id from score where c_name ='计算机'));

 (2) 正确答案

+-----+--------+------+-------+------------+--------------+

| id  | name   | sex  | birth | department | address      |

+-----+--------+------+-------+------------+--------------+

| 901 | 张老大 | 男   |  1985 | 计算机系   | 北京市海淀区 |

| 904 | 李四   | 男   |  1990 | 英语系     | 辽宁省阜新市 |

| 906 | 王六   | 男   |  1988 | 计算机系   | 湖南省衡阳市 |

+-----+--------+------+-------+------------+--------------+

mysql练习题-查询同时参加计算机和英语考试的学生的信息-遁地龙卷风的更多相关文章

  1. MySQL中查询获取每个班级成绩前三名的学生信息

    CREATE TABLE t_testscore( pk_id INT PRIMARY KEY, c_name VARCHAR(50) , c_score INT, c_class INT )DEFA ...

  2. MySQL练习题1

    以下SQL操作均在MYSQL上测试过 首先是表定义 1.创建student和score表 CREATE TABLE student ( id ) NOT NULL UNIQUE PRIMARY KEY ...

  3. mysql经典查询语句-笔记

    笔记来源公开课,谢谢! 1.创建student和score表 CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name ...

  4. 笔记-4:mysql数据查询

    1.创建查询表 1.1 创建班级表 含义 字段名 数据类型 宽度 班级编号 classNo 字符型 6 班级名称 className 字符型 20 所属院系 department 字符型 30 年级 ...

  5. mysql 分组查询前n条数据

    今天去面试,碰到一道面试题: 有一个学生成绩表,表中有 表id.学生名.学科.分数.学生id .查询每科学习最好的两名学生的信息: 建表sql: CREATE TABLE `stuscore` ( ` ...

  6. MYSQL之查询篇

    2. 数据库操作 数据库在创建以后最常见的操作便是查询 2.1 查询 为了便于学习和理解,我们预先准备了两个表分别是stduents表和classes表两个表的内容和结构如下所示 students表的 ...

  7. MySQL 表查询语句练习题

    MySQL 表查询语句练习题: 一.  设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表 ...

  8. MYSQL select查询练习题

    10. 查询Score表中的最高分的学生学号和课程号.(子查询或者排序) select sno,cno from score where degree=(select max(degree) from ...

  9. mysql常见查询练习题

    #建学生信息表student create table student ( sno varchar(20) not null primary key, sname varchar(20) not nu ...

随机推荐

  1. 【转】前端工程师必须了解的 谷歌 HTML/CSS 规范

    背景 这篇文章定义了 HTML 和 CSS 的格式和代码规范,旨在提高代码质量和协作效率. 通用样式规范 协议 省略图片.样式.脚本以及其他媒体文件 URL 的协议部分(http:,https:),除 ...

  2. MarkDown+LaTex 数学内容编辑样例收集

    $\color{green}{MarkDown+LaTex 数学内容编辑样例收集}$ 1.大小标题的居中,大小,颜色 [例1] $\color{Blue}{一元二次方程根的分布}$ $\color{R ...

  3. 【前端积累】SEO 学习

    白帽SEO:网站标题  关键字  描述   网站内容优化   Robot.txt文件   网站地图   增加外链引用 网站结构布局优化:扁平化结构 控制首页链接数量:中小网站100以内,页面导航.底部 ...

  4. RTMP流媒体播放过程

      RTMP协议规定:第一步,建立一个网络连接(NetConnection):客户端和服务端的基础连通关系 第二步:建立一个网络流(NetStream)发送多媒体的通道(只能建立一个网络连接,可以建立 ...

  5. mysql-You can’t specify target table for update in FROM clause错误

    mysql中You can't specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表( ...

  6. 【USACO 3.1】Stamps (完全背包)

    题意:给你n种价值不同的邮票,最大的不超过10000元,一次最多贴k张,求1到多少都能被表示出来?n≤50,k≤200. 题解:dp[i]表示i元最少可以用几张邮票表示,那么对于价值a的邮票,可以推出 ...

  7. javascript中正则实现读取当前url中指定参数值方法。

    getQueryString:function(name) { var reg = new RegExp("(^|&)"+ name +"=([^&]*) ...

  8. Git中如何利用生成SSH个人公钥访问git仓库

    Git中如何利用生成SSH个人公钥访问git仓库方法(这里以coding平台为例): 1. 获取 SSH 协议地址 在项目的代码页面点击 SSH 切换到 SSH 协议, 获得访问地址, 请使用这个地址 ...

  9. Codeforces 划水

    Codeforces 566F 题目大意:给定$N$个数,任意两个数之间若存在一个数为另一个数的因数,那么这两个数存在边,求图中最大团. 分析:求一个图最大团为NP-Hard问题,一般不采用硬方法算. ...

  10. 【gulp】工作中的实战

    写这篇文章的目的是为了以后的项目中懒得再去配gulp,直接可以拿这篇博客中的来用,因为有时候配置还是挺烦人的. gulp相关插件的介绍 用法比较简单,假设大家都会用gulp,下面主要介绍一下一些插件的 ...