SQL语句与多表查询
首先先了解一下一些基本的概念问题:
1.group by是分组查询一般和聚合函数一起使用。
例如:
Select studentID,Count(*) From sc Group By score Having Count(*) > 1
常用的聚合函数有sum,count,等。
学生表(student)(学号,姓名,性别,年龄,学院),课程表(course)(课程号,课程名,学分),学生选课表(SC)(学号,课程号,成绩)/* SQLyog Enterprise - MySQL GUI v7.11 MySQL - 5.0.21-community-nt : Database - toutiao ********************************************************************* */ /*!40101 SET NAMES utf8 */; /*!40101 SET SQL_MODE=''*/; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; CREATE DATABASE /*!32312 IF NOT EXISTS*/`toutiao` /*!40100 DEFAULT CHARACTER SET utf8 */; USE `toutiao`; /*Table structure for table `course` */ DROP TABLE IF EXISTS `course`; CREATE TABLE `course` ( `id` int(11) NOT NULL auto_increment, `courseID` int(11) NOT NULL, `courseName` varchar(11) NOT NULL, `credit` int(4) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; /*Data for the table `course` */ insert into `course`(`id`,`courseID`,`courseName`,`credit`) values (1,0,'',0); /*Table structure for table `sc` */ DROP TABLE IF EXISTS `sc`; CREATE TABLE `sc` ( `id` int(11) NOT NULL auto_increment, `studentID` int(11) NOT NULL, `courseID` int(11) NOT NULL, `score` int(11) default NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; /*Data for the table `sc` */ insert into `sc`(`id`,`studentID`,`courseID`,`score`) values (1,1101,1101,89),(2,1101,1102,67),(3,1101,1103,90),(4,1101,1104,89),(5,1101,1105,89),(6,1102,1101,69),(7,1102,1102,69); /*Table structure for table `student` */ DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `id` int(11) NOT NULL auto_increment, `sno` varchar(11) NOT NULL default '', `username` varchar(11) NOT NULL default '', `sex` char(2) NOT NULL, `age` int(4) NOT NULL, `collage` varchar(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; /*Data for the table `student` */ insert into `student`(`id`,`sno`,`username`,`sex`,`age`,`collage`) values (1,'11','11','',0,''),(2,'11','11','',0,''),(3,'33','jou','',0,''),(4,'11','fff','',0,''); /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
1.学生中其他学院比计算机学院姓“刘”的学生年龄都小学生(结果列:学号,姓名,年龄,学院)
2.查询选修了2门以上课程的学生(结果列:学号,姓名)
3.查询没门课程都大于80分的学生(结果列:学号,姓名)
4,如果下表为生产加工每个计划对应的成品,退料,余料,废次材捆包的个数
计划号 捆包类型 个数
001 成品 5
001 退料 2
002 成品 4
002 余料 1
002 废次材 1
003 成品 5
003 废次材 1
用一句select语句实现以下方式统计各个计划对应各个类型捆包的个数:
计划号 成品 退料 余料 废次材
001 5 2 0 0
002 4 0 1 1
003 5 0 0 1
5.写出一句SQL语句:取出表A中第31DAO第40记录(已自动增长的ID作为主键。注意:ID可能不是连续的。)
6,如何删除一个表中某个字段记录重复的记录(重复的只要保留一条)
6.1查询表中多余的重复记录,重复的记录以字段(studentID)为根据。
select * from sc where studentID in (select studentID from sc group by studentID having count(studentID) > 1)
6.2查询表中重复记录,重复的记录以(studentID,score)为根据,即是多个字段。
select * from sc a where (a.studentID,a.score) in (select studentID ,score from sc group by studentID,score having count(*)>1);
6.3查询表中重复记录,重复的记录以(studentID,score)为根据,但是重复记录中不包含(id)最小的这条记录。
select * from sc a where (a.studentID,a.score)in (select studentID,score from sc group by studentID,score having count(*) > 1) and id not in (select min(id) from sc group by studentID,score having count(*)> 1)
相关推荐
数据库查询语句数据库查询语句数据库查询语句数据库查询语句
可视化sql查询语句生成器,通过点击选择,生成Sql查询语句
Oracle常用SQL查询语句,Oracle常用SQL查询语句,Oracle常用SQL查询语句
SQL查询语句大全SQL查询语句大全SQL查询语句大全SQL查询语句大全SQL查询语句大全SQL查询语句大全SQL查询语句大全SQL查询语句大全SQL查询语句大全
SQL查询语句全
总结简单PLSQL查询语句,包括删除,in,逻辑语句,排序等
SQL查询语句的练习SQL查询语句的练习SQL查询语句的练习SQL查询语句的练习SQL查询语句的练习SQL查询语句的练习SQL查询语句的练习
SQL数据库的查询语句,文本里有很多的查询语句,可以直接复制并且到SQL里面运行,同时还有中文解释原理,是个很方便的记录文本
我自己整理的,认为还可以让大家看看,包括数据库和函数及查询语句
ACCESS数据库与SQL查询语句生成示例 ACCESS数据库与SQL查询语句生成示例 ACCESS数据库与SQL查询语句生成示例
XML查询语句转换成SQL语句的实现.pdf
sql查询语句详细实例教程sql查询语句详细实例教程
sqlserver分页查询语句;sqlserver分页查询语句;sqlserver分页查询语句;
数据库基础查询语句详解--此文本列举了上述博文中所有查询语句的代码,可以参考该文件进行数据库查询操作。
称: oracle查询语句大全 资源类型
SQL查询语句教程,WORD版本,很详细,通俗易懂。
SQL查询语句大全集锦,常用的查询语句,常备哦!
MySQL查询语句大全 各种关于数据库的语句 增删改查
ACCESS查询语句的用法,用于ACCESS数据库的查询,建立小型数据库必备