sql 多表关联查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 多表关联查询相关的知识,希望对你有一定的参考价值。

A,B两个表
以A表为主
两个表的关联字段为 user_id
我想查出A表中的所有字段,和B表中的一个字段
不想把A表中所有字段全部列出来,太多了有几十个,太浪费时间了,有没有简单的方法?
求告知~

SQL多个表实现联合查询
select LineId,Id,Country from Domestic
union all
select LineId,Id,Country from Freedom
-- 联合查询Domestic,Freedom表的LineId,Id,Country all代表不去除反复
--功能:[SQL语句] UNION [SQL语句]将两个语句中选择的同一列中的不同的值筛选出来
SELECT<表1>.<列名> ,<表2><列名>FROM<表1>OUTER JOIN<表2> ON<表1>.<列>=表2>.<列名>
--功能:实现两个表的外连接
Select Domestic.LineId,Freedom.LineId from Domestic,Freedom where Domestic.Sames=Freedom.Sames
Select Domestic.LineId,Freedom.LineId FROM Domestic inner join Freedom on Freedom.Sames=Domestic.Sames
--功能:实现两个表的内连接 把Domestic,Freedom两个表用Domestic.Sames=Freedom.Sames关联起来显示Domestic.LineId,Freedom.LineId
------------------------
我的数据库表是这种:table0101,table0102,table0103,.......各个表有同样的结构,我想用sql语句从查询分析器里导出来,有没有办法能够一次导出,语句要返回一个结果集.
用union all就能够实现:
select * from table0101
union all
select * from table0102
union all
select * from table0103
union all
select * from table0104
....
参考技术A select (?,?) from A groupby B where A.user_id = B.user_id.
(问号填你需要的字段)
参考技术B

这个不难吧,如下:

SELECT A.*,B.??? FROM A
LEFT JOIN B ON A.USER_ID = B.USER_ID

本回答被提问者采纳

多表查询-SQL92

多表查询是一个比较实际有比较复杂的一种查询。下面希望可以通过实例展示的形式,可以供大家一起学习交流。

--笛卡尔积式的查询
select * from emp,dept;
--笛卡尔积查询的结果会有很多无效的数据,所以要通过关联条件进行筛选
--所以,出现了一些“关联符号”

--等值连接:提示查询结构中如果有相同的列,要指定表名 标识 是哪个表的字段
select * from emp,dept where emp.deptno = dept.deptno order by dept.deptno;

--使用多表查询可以给表 指定 别名  表的别名不要加 AS 报错
--给表取别名之后,原来的表名不能再使用了  (只能使用的是别名)
select e.empno,e.ename,e.job,e.deptno,d.dname,d.loc
from emp e,dept d
where e.deptno = d.deptno
order by deptno;

--非等值连接
--查询所有员工的姓名,职位,薪水和薪水等级
select e.ename,e.job,e.sal,s.grade
from emp e, salgrade s
where e.sal >= s.losal and e.sal <=hisal
--条件也可以使用between...and...
select e.ename,e.job,e.sal,s.grade
from emp e,salgrade s
where e.sal between s.losal and s.hisal;

--自连接
--查询员工编号,姓名,领导的编号和姓名
--select * from emp;
select e1.empno ,e1.ename,e1.mgr,e2.ename
from emp e1,emp e2 --e1 可以看作是员工表,e2可以看作领导表
where e1.mgr = e2.empno;--让员工表领导的编号等于领导表的员工编号

select e1.empno ,e1.ename,e2.empno,e2.ename
from emp e1,emp e2 
where e1.mgr = e2.empno;


--查询所有的员工编号,姓名,有领导的显示领导的编号和姓名,没有领导的只显示员工信息
--外连接 :显示某张表中没有关联的信息,可以通过 "(+)" 来实现
select e1.empno ,e1.ename,e1.mgr,e2.ename
from emp e1,emp e2
where e1.mgr = e2.empno(+);--左外连接

--查询所有部门的信息以及每个部门的平均工资,包涵没有员工的部门
select d.*,round(nvl(avg(e.sal),0)) avg_sal
from emp e,dept d
where e.deptno(+) = d.deptno
group by d.deptno,d.dname,d.loc
order by d.deptno;

--查询20部门的员工编号,姓名,薪水,部门名称,薪水等级
select e.empno,e.ename,e.sal,d.dname,s.grade
from emp e,dept d ,salgrade s 
where e.deptno = d.deptno
and   e.sal between s.losal and s.hisal
and   d.deptno=20;

--n张表关联查询,至少需要n-1个条件关联

 

以上是关于sql 多表关联查询的主要内容,如果未能解决你的问题,请参考以下文章

sql mysql多表如何关联查询

多表关联查询语法?

Oracle - 查询语句 - 多表关联查询

select 多表关联查询

SQL语句UPDATE 多表关联的

如何实现多表关联查询