sql连接查询
A. sql连接查询方式有哪些
左连接
右连接
内连接
外连接
B. 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
C. sql 全连接查询
在两表连接是不能用groub
by的。(内连接查询)
select
学号,姓名,选修课课程from
学生信息表
inner
join
课程表
on
学生信息表.选修课课程
=
课程表.选修课课程;
D. SQL左连接查询
select * from a left join b on a.id=b.id left join c on a.id=c.id where c.id=XX;
E. 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 这个你没写,所以结果当然输出不了
F. 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
G. 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分的学习的姓名啊,就是不要每科的分数,只要姓名。
H. 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的所有除去两表的交集