数据库 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 和 = 、  MAX处理一对多

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 和 = 、  MAX处理一对多

*******************************************************************************************************************************************

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')

数据库  in 和 = 、  MAX处理一对多

 

************************************************************************************************************************************************

在开发中 left join 使用 in 如果出现了一对多,需要注意

数据库  in 和 = 、  MAX处理一对多

**************************************************************************************************************************************

用MAX 函数处理 成一张表,然后在从这张表中选出自己要的值,插入到新表中

数据库  in 和 = 、  MAX处理一对多

出现一对多情况,我们在开发存储过程时用MAX 来处理, 以下是把选出来的值插入到新表中

数据库  in 和 = 、  MAX处理一对多

 

*********************************************************************************************************************************

如下是开发过程中遇到的用MAX 处理的情况,

数据库  in 和 = 、  MAX处理一对多

 

如果有更好的办法,欢迎分享

 

 

上一篇:数据库第六章总结


下一篇:mysql触发器实时检测一条语句进行备份删除