重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
select * from 表1 inner join 表2 on 关联条件
创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于网站建设、成都网站设计、肥西网络推广、小程序制作、肥西网络营销、肥西企业策划、肥西品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联公司为所有大学生创业者提供肥西建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com
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;
我觉得:
表结构不同的话,用你的方法比较好,速度快。
写成这样:select count(*) from `b` where `nid` = '123';
直接统计出数目了
2.表结构相同的话:
写成这样select count(*) from `a` where `nid` = '123' UNION ALL select count(*) from `b` where `nid` = '123';
一使用SELECT子句进行多表查询SELECT 字段名 FROM 表1,表2 … WHERE 表1字段 = 表2字段 AND 其它查询条件SELECT a.id,a.name,a.address,a.date,b.math,b.english,b.chinese FROM tb_demo065_tel AS b,tb_demo065 AS a WHERE a.id=b.id
注:在上面的的代码中,以两张表的id字段信息相同作为条件建立两表关联,但在实际开发中不应该这样使用,最好用主外键约束来实现。
1、联合查询可合并多个相似的选择查询的结果集。等同于将一个表追加到另一个表,从而实现将两个表的查询组合到一起,使用谓词为UNION或UNION ALL。联合查询时,查询结果的列标题为第一个查询语句的列标题。因此,要定义列标题必须在第一个查询语句中定义。要对联合查询结果排序时,也必须使用第一查询语句中的列名、列标题或者列序号。
2、在使用UNION 运算符时,应保证每个联合查询语句的选择列表中有相同数量的表达式,并且每个查询选择表达式应具有相同的数据类型,或是可以自动将它们转换为相同的数据类型。在自动转换时,对于数值类型,系统将低精度的数据类型转换为高精度的数据类型。
3、在包括多个查询的UNION语句中,其执行顺序是自左至右,使用括号可以改变这一执行顺序。例如:查询1 UNION (查询2 UNION 查询3)。
table_list——多表查询
指定查询的数据表。
既可以从一个数据表中查询,也可以从多个数据表中进行查询,多个数据表之间用“,”进行分隔,并且可以通过where子句使用连接运算来确定表之间的联系。
多表查询的sql语句格式如下:
select 表名.字段名 from 表1,表2... where 表1.字段=表2.字段 and 其它查询条件
例如,首先查看一下tb_chengji数据表中的数据记录。在上图有显示效果。
然后查看一下tb_info数据表中的数据记录。代码如下:
select * from tb_info;
在上面的SQL语句中,因为2个表都有id字段和xuesheng字段,为了告诉服务器要显示的是哪个表中的字段信息,所以要加上前缀。语法格式如下:
表名.字段名