数据库 in 和 = 、 MAX处理一对多
作者:互联网
建表1:
CREATE TABLE student(
Sno char(15) NOT NULL,
Sname char(20) NULL,
Ssex char(2) NULL,
Sage smallint NULL,
Sdept char(20) NULL
)
INSERT student (Sno, Sname, Ssex, Sage, Sdept) VALUES ('2012000', '李一平', '男', '18', 'IS')
INSERT student (Sno, Sname, Ssex, Sage, Sdept) VALUES ('2012111', '张立', '男', '19', 'IS')
INSERT student (Sno, Sname, Ssex, Sage, Sdept) VALUES ('2012222', '刘晨', '女', '19', 'CS')
INSERT student (Sno, Sname, Ssex, Sage, Sdept) VALUES ('2012333', '王敏', '女', '18', 'MA')
INSERT student (Sno, Sname, Ssex, Sage, Sdept) VALUES ('2012444', '李勇', '男', '20', 'CS')
INSERT student (Sno, Sname, Ssex, Sage, Sdept) VALUES ('201255555', '张琴', '女', '19', 'CS')
INSERT student (Sno, Sname, Ssex, Sage, Sdept) VALUES ('201266666', '王方', '女', '20', 'MA')
INSERT student (Sno, Sname, Ssex, Sage, Sdept) VALUES ('201277777', '黄林林', '男', '21', 'IS')
建表2:
CREATE TABLE SC (
Sno nchar(10) NULL,
Cno char(4) NOT NULL,
Grade char(4) NOT NULL,
)
INSERT SC(Sno, Cno, Grade) VALUES ('2012000', '1', '60')
INSERT SC(Sno, Cno, Grade) VALUES ('2012111', '2', '70')
INSERT SC(Sno, Cno, Grade) VALUES ('2012222', '2', '70')
INSERT SC(Sno, Cno, Grade) VALUES ('2012333', '2', '70')
INSERT SC(Sno, Cno, Grade) VALUES ('2012444', '2', '70')
INSERT SC(Sno, Cno, Grade) VALUES ('2012555', '2', '70')
IN 和 = 操作
语法 :SELECT * FROM 表名
WHERE 字段名 IN (记录值1,记录值2,记录值3,...)
例子:SELECT * FROM student WHERE Sno IN ('2012000','2012222','2012333')
in 转换为 =
语法 : SELECT * FROM student WHERE Sno= 记录值1 or Sno= 记录值2 or Sno= 记录值3
例子:SELECT * FROM student WHERE Sno='2012000' or Sno='2012222' or Sno='2012333'
*******************************************************************************************************************************************
IN 与 = 在 子查询中的操作
in 可以用于返回多个值,而不能用于返回多个值
例子:
in 例子: SELECT * FROM student WHERE Sno in (SELECT Sno FROM sc)
= 例子: SELECT * FROM student WHERE Sno = (SELECT Sno FROM SC WHERE SNO='2012000')
************************************************************************************************************************************************
在开发中 left join 使用 in 如果出现了一对多,需要注意
**************************************************************************************************************************************
用MAX 函数处理 成一张表,然后在从这张表中选出自己要的值,插入到新表中
出现一对多情况,我们在开发存储过程时用MAX 来处理, 以下是把选出来的值插入到新表中
*********************************************************************************************************************************
如下是开发过程中遇到的用MAX 处理的情况,
如果有更好的办法,欢迎分享
标签:INSERT,Sname,MAX,数据库,Sdept,VALUES,student,Sno,一对 来源: https://blog.csdn.net/qq_42064309/article/details/100578207