‘壹’ sql一对多查询
select客户表.客户编号,nvl(stat.c,0)
from客户表
leftjoin(select客户编号,sum(商品价格)cfrom交易表groupby客户编号)statonstat.客户编号=客户表.客户编号
‘贰’ sql 一对多统计查询
借一下1L的语句
select u.id,u.niceName,u.imei,u.address,u.mobile,v.次数
from users as u ,
(select count(1) 次数,imei from reback Where [time]>'2012-11-06'
and [time]<'2012-11-07' group by imei ) v
where v.imei = u.imei
order by v.次数 desc
然后顺便一提,4000w的表,那么time、imei两列都要加索引,还有users表中的imei也要加索引
‘叁’ sql 一对多的查询
你怎么俩table1,后一个叫table2吧
执行以下语句
selectt1.考试学号,t1.科目,t2.考试成绩
from
(selecta.科目,a.科目ID,b.考试学号
from
(select科目,科目IDfromtable1)asa,
(selectdistinct考试学号fromtable2)asb)ast1leftjoin
table2ast2ont1.科目ID=t2.科目IDandt1.考试学号=t2.考试学号
结果截图
下边还有几条没显示全,凑合看吧
‘肆’ sql server 一对多统计数量
数据
我这里叫a,b,c了,跟你表1,2,3是对应的
createtablea(uidint,namevarchar(10))
insertintoavalues(1,'张一')
insertintoavalues(2,'张二')
createtableb(uidint,type1varchar(1))
insertintobvalues(1,'a')
insertintobvalues(1,'b')
insertintobvalues(1,'c')
insertintobvalues(2,'b')
insertintobvalues(2,'c')createtablec(uidint,type2varchar(1))
insertintocvalues(1,'a')
insertintocvalues(2,'b')
insertintocvalues(2,'c')
运行
selectt1.uid,t2.c1,t3.c2fromat1
leftjoin
(selectuid,count(*)c1frombgroupbyuid)t2ont1.uid=t2.uid
leftjoin
(selectuid,count(*)c2fromcgroupbyuid)t3ont1.uid=t3.uid
结果
‘伍’ SQL的一对多,多对一,一对一,多对多什么意思
1、一对多:比如说一个班级有很多学生,可是这个班级只有一个班主任。在这个班级中随便找一个人,就会知道他们的班主任是谁;知道了这个班主任就会知道有哪几个学生。这里班主任和学生的关系就是一对多。
2、多对一:比如说一个班级有很多学生,可是这个班级只有一个班主任。在这个班级中随便找一个人,就会知道他们的班主任是谁;知道了这个班主任就会知道有哪几个学生。这里学生和班主任的关系就是多对一。
3、一对一:比如说一个班级有很多学生,他们分别有不同的学号。一个学生对应一个学号,一个学号对应一个学生;通过学号能找到学生,通过学生也能得到学号,不会重复。这里学生和学号的关系就是一对一。
4、多对多:比如说一个班级有很多学生,他们有语文课、数学课、英语课等很多课。一门课有很多人上,一个人上很多门课。这里学生和课程的关系就是多对多。
‘陆’ SQL两张表一对多如何查询
selectGoods.trumbnail
fromGoods
leftjoinPictureonGoods.picture=Picture.id
‘柒’ SQL一对多比较
select course_name from course2
where course_id in(
select course_id from course1
where student = 0001);
‘捌’ sql一对多关系查询
数据插入
insert into b(aid,bvalue) select 3,'bvalue' from a where a.id=3
解释:select 3,'bvalue' from a where a.id=3
3=我们向B表中插入的aid的值
bvalue=我们向B表中插入的bvalue的值
使用where
语句判断主表(A表)是否拥有ID为3的数据
数据查询
select a.avalue,b.aid ,b.bvalue
from a left join b on b.aid=a.id
SELECT
t1.id,t2.id,t3.id
FROM t1,( t2 LEFT JOIN t3 ON (t3.id=t1.id) )
WHERE
t1.id=t2.id;
‘玖’ sql 一对多查询
交给我吧,典型的交叉查询,行列转换
select s.StudentName,
(case r.Subject when '语文' then r.Math end) as 语文,
(case r.Subject when '数学' then r.Math end) as 数学,
(case r.Subject when '英语' then r.Math end) as 英语,
(case r.Subject when '物理' then r.Math end) as 物理,
(case r.Subject when '地理' then r.Math end) as 地理
from Student s,Results r
where s.StudentId=r.StudentId
能用的话记得给分哦~
‘拾’ sql 一对多查询分组
SELECT '总经理('+STUFF((SELECT ','+总经理 FROM 表 FOR XML PATH('')),1,1,'')+')'