mysql怎么进行2表或3表的外联查询

mysql怎么进行2表或3表的外联查询,第1张

两个

select a.*,b.* from b left join a on 联结条件 where 查询结果中的条件(比如a.id>10 and b.name like '%abc%')

三个表

就当成两个表,其中一个表是前两个表的结合

select c.*,d.* from c left join (表二 也就是上面两个表的句子) b on 联结条件 where 查询结果中的条件

select * from 表1 inner join 表2 on 关联条件

select * from 表1 left outer join 表2 on 关联条件

select * from 表1 right outer join 表2 on 关联条件

select * from 表1 cross join 表2 on 关联条件

MYSQL查询

查询平均成绩大于70分的同学的学号和平均成绩

SELECT s.id,AVG(sc.score) FROM student s,studentcourse sc WHERE s.id=sc.student_id GROUP BY s.id HAVING  AVG(sc.score)>70

查询所有同学的学号、姓名、选课数、总成绩

SELECT id,NAME

FROM student

WHERE id NOT IN (SELECT student_id

FROM studentcourse

WHERE course_id IN (SELECT course.id

FROM teacher,course

WHERE teacher.id=course.teacher_id

AND teacher.name=’关羽’))

查询学生信息和平均成绩

SELECT s.id,s.name,s.city,s.age, c.name,sc.score,t.name

FROM student s,studentcourse sc,course c,teacher t

WHERE s.id=sc.student_id AND c.id=sc.course_id AND c.teacher_id=t.id GROUP BY s.id 

http://www.cnblogs.com/withscorpion/p/9454490.html

内联就是全部都要符合条件, 没有NULL

select * from t1 inner join t2 where t1.user_id = t2.user_id

把两个表中都存在userid的行拼成一行(即内联),但后者的效率会比前者高很多,建议用后者(内联)的写法。

左联(left outer join)。

select * from t1 left outer join t2 where t1.user_id = t2.user_id

左边的数据全部展示, 右边的数据符合条件的展示, 不符合条件的NULL展示

全联

显示左表T1、右表T2两边中的所有行,即把左联结果表 + 右联结果表组合在一起,然后过滤掉重复的。

select * from t1 full outer join t2 where t1.userid = t2.userid


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8487178.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-16
下一篇 2023-04-16

发表评论

登录后才能评论

评论列表(0条)

保存