A. sql怎么将查询结果连接到一起
(1)联立选字段
selecta.id,a.namename_2014,a.age.b.namename_2013from
(selectid,name,agefromawheretime=2014)a,
(selectid,namefromawheretime=2013)bwherea.id=b.id
(2)利用casewhen和groupby,这个需要测试(原因是我忘了直接写group行不行,还是要再套一层)
selectid,max((casewhentime=2014thennameend))name_2014,max((casewhentime=2014thenageend))age,max((casewhentime=2013thennameend))name_2013fromtablegroupbyid
(3)字段子查询,也需要测试,好像有时候会爆写错误
selectid,name,age,(selectnamefromtablewheretime=2013andtable.id=a.id)name_2013fromtableawherea.time=2014
B. SQL左连接查询
select * from a left join b on a.id=b.id left join c on a.id=c.id where c.id=XX;
C. SQL 怎样连接两个查询结果
只算平均分吗?不考虑是否大于80吧。
select Student.*,t1.CNum,t1.Grade,(select Avg(Grade)
from SC t2
where t2.SNum=t1.SNum and Avg(Grade)>=80) as 平均分
from Student,SC t1
where
t1.SNum=Student.SNum
你说的是平均分不大于80的学生就不列出来吗?
还是平均分低于80的学生就不显示平均分了?
我估计你说的是前者
select Student.*,t1.CNum,t1.Grade,(select Avg(Grade)
from SC t2
where t2.SNum=t1.SNum group by t2.SNum having Avg(Grade)>=80) as 平均分
from Student,SC t1
where
t1.SNum=Student.SNum
这个显示的是所有学生的所有成绩,如果平均分大于80,就显示平均分,小于就不显示平均分。
如果你只要平均分大于80的学生的信息的话:
select Student.*,t1.CNum,t1.Grade,(select Avg(Grade)
from SC t2
where t2.SNum=t1.SNum) as 平均分
from Student,SC t1
where t1.SNum=Student.SNum
and (select Avg(Grade) from SC t2
where t2.SNum=t1.SNum
and group by t2.SNum)>=80
不知道你是否会要大于80分的学习的姓名啊,就是不要每科的分数,只要姓名。
D. sql连接查询方式有哪些
左连接
右连接
内连接
外连接
E. sql如何把两个查询结果连接在一起
你要的是什么结果。
是
id,name ,age
可是2013没有这个字段啊,age要怎么显示?
还是
id_2014 name_2014 age_2014 id_2013 name_2013你要的是哪种?
F. sql语句连接查询
select 发言记录 from table_name where 用户名='XXX' order by 发言记录
--------------------------------------------------------------------
select a.username,a.email,a.phone from information a,msg b where a.username=b.sender and a.username='XXX' order by b.id
-----------------------补充----------------
输出不了是因为你少写条件了
a.username=b.sender 这个你没写,所以结果当然输出不了
G. SQL常用的几种连接查询
一、内连接(Inner Join)
select*fromainnerjoinbona.name=b.name;
此语句的结果为同时匹配表a和表b的记录集。即内连接取的是两个表的交集。
二、全外连接(full outer join)
select*fromafullouterjoinbona.name=b.name;
此语句的结果为表a与表b的并集,即任意一个表的内容都将被查询出来,如果另一个表无对应的项,则显示为null
select*fromafullouterjoinbona.name=b.namewherea.nameisnullorb.nameisnull;
此语句的结果为表a与表b的并集除去两表的交集。即除去了两表都有的部分,剩余的是两表各自不同的部分
三、左外连接(left outer join)
select*fromaleftouterjoinbona.name=b.name;
此语句的结果为表a的所有项加表b与a相匹配的项,b中没有与a匹配的项时显示为null
select*fromaleftouterjoinbona.name=b.namewhereb.nameisnull;
此语句的结果为表a的所有项除去两表的交集
四、右外连接(right outer join)
select*fromarightouterjoinbona.name=b.name;
此语句的结果为表a与表b匹配的项加表b的所有项,a中没有与b匹配的项时显示为null
select*fromarightouterjoinbona.name=b.namewherea.nameisnull;
此语句的结果为表b的所有除去两表的交集
H. SQL三表连接查询
select a.*,c.f from (select * from a inner join b on a.a = b.a) as a inner join c on a.d = c.d
select a.*,c.f from a inner join b on a.a = b.a inner join b.d = b.d
两个都可以,第一个更容易理解,括号里的部分是查询出查询表A的数据和当表A的a=表B的a的数据,把这个结果集,再inner join c on a.d = c.d
查询出表B的d=表C的d 所对应的f的值。
(8)sql连接查询扩展阅读:
三个表左连接的sql语句
select
intro_web_page.id,
web_id,
web_name,
template_id ,
template_name,
template_param,
intro_web_page.sort_order
from intro_web_page left join intro_web on (web_id=intro_web.id)
left join intro_template on (intro_web_page.template_id=intro_template.id)
注:这里主要是看,当两个表和某一个表都有联系的时候,左连接left join on要怎么写。
更新语句
UPDATE issue INNER JOIN user ON `issue`.insert_uid and `user`.id INNER JOIN
(SELECT issue.id as id,issue.insert_uid as uid,`user`.school_id as school_id,school.area as area1 from issue,user,school
where issue.insert_uid=`user`.id and `user`.school_id=school.id) AS T1
ON issue.insert_uid=T1.uid
SET issue.area=T1.area1
I. SQL数据库连接查询
不管是1还是2都是同一个栏位cityName
你要是这样只能用下面的方法了
a,b是上面的表
select
t1.busnum,case
when
t1.begincityid=1
then
'长春'
ELSE
'广州'end
as
begincityid,
case
when
t1.endCityId=1
then
'长春'
ELSE
'广州'end
as
endCityId,t1.startTime
from
a
t1,
b
t2
where
t1.begincityid=t2.cityid
J. sql 全连接查询
在两表连接是不能用groub
by的。(内连接查询)
select
学号,姓名,选修课课程from
学生信息表
inner
join
课程表
on
学生信息表.选修课课程
=
课程表.选修课课程;