‘壹’ 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行数据。
‘贰’ SQL 联合查询
按楼主你的问题,应该用union,也就是micro0369和xp_lovely 的回答。
但是两张表的列并不完全一致,表b中没有sex字段,所以从表b中取的数据sex字段默认取null,sql语句如下:
select * from a where age =20
union
select *,null from b where age = 20
‘叁’ sql联合查询语句(两张表)是什么
sql联合查询语句(两张表)是:
select A.ID,A.VALUE,A.TYPE,A.NAME,B.KEY,B.ID,B.VALUE,B.NAME
min(VALUE),max(VALUE) from A left join B on A.ID = B.ID
where B.NAME="你输入的名字"
and B.VALUE > (select min(VALUE) from B where NAME="你输入的名字"))
and B.VALUE < (select min(VALUE) from B where NAME="你输入的名字"));
‘肆’ 什么是sql联合查询 简单点告诉我
关联查询吧
是根据表里面相同的字段查询出你想要的数据的
比如说:A、B两个表,分别是
学号 姓名 性别
1 张三 男
2 李四 不男不女
3 王五 女
4 周六 男
学号 总成绩
1 200
3 250
4 300
A表和B表的学号都是唯一的主键,那么就可以根据学号关联,将你想要的两个表的数据关联起来
语句如:
select a.学号,a.姓名,a.性别,b,总成绩 from A a inner join B b on a.学号 = b.学号
这句话会输出A表和B表里面关于两表学号相等项的姓名、性别、总成绩三个字段,里面那个不男不女的没有考试,所以没有总成绩,输出应该是:
学号 姓名 性别 总成绩
1 张三 男 200
3 王五 女 250
4 周六 男 300
具体关联有外关联和关联两个概念,上面的例子只能给你很简单的,你上网多找点例子看,再自己多建几个表多打几遍,慢慢就找到规律了,不难
祝你成功!
‘伍’ 问题是这样的:关于sql 一个表中两个不同的字段联合起来查询。
可以在表里新加一个字段:fullName值就是lastName+foreName 搜索的时候直接搜索fullName就行了。假如在sql语句里直接加的话,效率不好。很多在sql里做计算的语句,都可以在表里添加辅助字段,在插入记录时就把值计算出来,这样可以提高查寻的效率。
‘陆’ sql联合查询
连接的字段名称没有写错吧,我看你这个SQL没有问题的啊,你在试试下面的,
--方法一
selecta.*,
b.name
frominfoa
innerjoinstuffbona.num=b.num
wherea.num=101
--方法2
selecta.*,
b.name
frominfoa,
stuffb
wherea.num=b.num
anda.num=101
‘柒’ sql多表联合查询步骤是什么
有内联左联右联具体字段需要表名加上字段也可以把表名as为一个简单的单词
例如表a有字段:学号课程表b有字段:学号姓名查询每个学生姓名和对应的课程
内联:selecta.课程,b.姓名fromainnerjoinbona.学号=b.学号
左联:selecta.课程,b.姓名fromaleftjoinbona.学号=b.学号
右联:selecta.课程,b.姓名fromarightjoinbona.学号=b.学号
内联是表a和b内容都匹配的才显示
左联是匹配左边这张表内容后面on和where条件匹配的话显示左边这张表的所有数据
右联和左联一样理解
‘捌’ sql联合查询语句(两张表)
sql联合查询语句(两张表)是:
select A.ID,A.VALUE,A.TYPE,A.NAME,B.KEY,B.ID,B.VALUE,B.NAME
min(VALUE),max(VALUE) from A left join B on A.ID = B.ID
where B.NAME="你输入的名字"
and B.VALUE > (select min(VALUE) from B where NAME="你输入的名字"))
and B.VALUE < (select min(VALUE) from B where NAME="你输入的名字"));
‘玖’ sql 两表联合查询
select * from a,b where a.file1=b.file1
SQL里只是判断两个字段等不等,和排序没关系,一样的值自然会被查出来。
如果上面的SQL查不出你想要的结果,那只有三种情况,一是a表和b表确实没有file1相同的数据,二是,两个表的定义不同,所以无法比较(比如一个是number,一个是varchar2,且varchar2里存的不是数字),三是,两个表的file1都是字符串,但一个是varchar2,一个是char,因为char会自动补空格,所以可能导致查不出来。