sql关联查询
A. sql 两个表的数据进行关联查询
查询2个表然后对比唯一的主键,对比表名sheet1,sheet2
SELECT * FROM sheet1 LEFT JOIN sheet2 ON sheet1.`列名` = sheet2.`列名`
B. SQL联合查询语句
A表字段stuid,stuname
B表字段bid,stuid,score,coursename,status
CREATE TABLE A#(
stuid INT,
stuname VARCHAR(10)
);
CREATE TABLE B# (
bid INT,
stuid INT,
score INT,
coursename VARCHAR(10),
status INT,
);
INSERT INTO A#
SELECT 1, '张三' UNION ALL
SELECT 2, '李四' UNION ALL
SELECT 3, '王五' UNION ALL
SELECT 4, '赵六'
;
INSERT INTO B#
SELECT 1, 1, 100, '语文', 0 UNION ALL
SELECT 2, 1, 99, '数学', 1 UNION ALL
SELECT 3, 2, 88, '语文', 0 UNION ALL
SELECT 4, 2, 88, '数学', 1 UNION ALL
SELECT 5, 3, 77, '语文', 0 UNION ALL
SELECT 6, 3, 77, '数学', 0 UNION ALL
SELECT 5, 4, 66, '语文', 1 UNION ALL
SELECT 6, 4, 66, '数学', 1
;
SELECT
A#.stuid,
B#.score,
B#.coursename,
B#.status
FROM
A# JOIN B#
ON (A#.stuid = B#.stuid AND B#.status = 1)
WHERE
NOT EXISTS (
SELECT
1
FROM
B# sub
WHERE
A#.stuid = sub.stuid
AND sub.status = 1
AND sub.score > B#.score
)
stuid score coursename status
----------- ----------- ---------- -----------
1 99 数学 1
2 88 数学 1
4 66 语文 1
4 66 数学 1
(4 行受影响)
注:
stuid = 3的,2门课程的 status 都为0,因此无数据显示。
stuid = 4 的,2门课程都等于 max(score), 因此显示出2行数据。
C. 关联 SQL 查询语句怎么写
select 名字 from a,b
where a.id = b.aid
and b.名字 = "bob"
你说的太乱了 给你个类似形式,自己补充吧
a.id = b.aid就是把a,b两个表相同的列关联起来,然后再找b表中名字为bob的 也就是and后面的条件
D. sql多表关联查询能用哪几种方法写
楼主使用的是子查询,子查询局限性较大,只能显示第一张表的字段。你可以这样写
SELECT * FROM biz.coursecomment a,so.sodetail b,so.somaster c
where a.sono=b.sono and b.sono=c.sono and c.TeacherNO='100199' and b.IsStudentComment='1' AND IsTeacherComment='1' and a.ToCustomerNO='100199'
这样写就避免了各种的子查询。当然,你还可以写成join的形式。join的层次更分明,代码如下:
SELECT * FROM biz.coursecomment a
join so.sodetail b
on a.sono=b.sono
join so.somaster c
on c.sono=b.sono
where c.TeacherNO='100199' and b.IsStudentComment='1' AND IsTeacherComment='1' and a.ToCustomerNO='100199'
如果不懂,可以追问
E. sql 关联查询!
先建立关系,TI和T2的ID连起来,然后建立查询,select T1.ID, T1.NAME,T2.JYS from T1, T2
F. sql同表联合查询
createTABLEtest(idint,atimedatetime,aaaint,btimedatetime,bbbint)
INSERTINTOdbo.test
(id,
atime,
aaa,
btime,
bbb
)
select
1,'2013-07-01',2,'2013-07-02',3
UNIONALL
SELECT
2,'2013-07-02',5,'2013-07-03',7
UNIONALL
SELECT
3,'2013-07-01',4,'2013-07-02',5
UNIONALL
SELECT
4,'2013-07-02',3,'2013-07-03',6
--SELECT*FROMtest
SELECTa.[time],SUM(aaa),SUM(bbb)
FROM
(
SELECTatimeAS[time],aaa,0ASbbb
FROMdbo.test
UNIONALL
SELECTbtimeAS[time],0ASaaa,bbb
FROMdbo.test
)a
GROUPBYa.[time]
-----结果
2013-07-0100:00:00.000 6 0
2013-07-0200:00:00.000 8 8
2013-07-0300:00:00.000 0 13
1、你的7.2号的bbb结果估计写错了,是8
2、因不知道你具体数据类型和具体库,我使用的是datetime类型,类型如果有误,你可以自己修改
G. 如何sql三张表关联查询
三张表关联查询
使用场景:A\B\C 三张表,现在要查询并展示A表和C表中的某些字段,但是A、C两表没有相同字段,无法关联,此时有B表恰好有两个字段,一个字段和A表一个字段相同,一个字段和C表一个字段相同,我们称B表为“中间表”,因此通过B表把A、C表关联起来
SELECT A1,A2,C1,C2 --展示A表中的A1\A2字段和C表中的C1\C2
FROM B --中间表
INNER JOIN A ON A.A1 = B.B1 --A表中的与B表中相同的字段
INNER JOIN C ON C.C1 = B.B1 --C表中的与B表中相同的字段
where xxxxx ---条件你自己按照需求来加,没有条件就不写where了
H. sql多表关联查询
用SELECT对多表关联进行查询。
I. 如何使用SQL两个表关联查询,如下图
SELECTa.*,isnull(b.N,'0')N
FROM[tableA]aleftjointableBb
ona.id=b.id
union
SELECTa.id,a.name,isnull(b.M,'0')M,a.N
FROM[tableB]aleftjointableAb
ona.id=b.id
J. SQL两个数据库关联查询
select * from [数据库1].dbo.[表1] where 字段='?' union
select * from [数据库2].dbo.[表2] where 字段='?' 表示把查询的结果合并显示,上面那个有些问题,就试下这个吧。这个是要求两个表的结构式一样的 或者是要查询的字段结构是一样的就可以