mysql怎么双表查询 mysql查两张表

mysql 怎么查询两个表的内容

查所有内容:select a.*,b.* from 表名1 a,表名2 b where a.id = b.id;

创新互联为客户提供专业的网站设计制作、成都网站建设、程序、域名、空间一条龙服务,提供基于WEB的系统开发. 服务项目涵盖了网页设计、网站程序开发、WEB系统开发、微信二次开发、手机网站制作设计等网站方面业务。

查指定内容:select a.要查的字段1,a.要查的字段2 from 表名1 a,表名2 b where a.id = b.id;

注意:a表跟b表 id是一样的!

mysql两表联合查询

两个表需要有共同的字段用来做对应关系,假定表a 的ab字段和表b 的bc字段意义是一样的:

新建两张表:

表a:ab ac ad

1 1 2

2 3 4

3 5 6

表b: bc bd be

1 7 8

3 9 10

4 11 12

(此时这样建表只是为了演示连接SQL语句,当然实际开发中我们不会这样建表,实际开发中这两个表会有自己不同的主键。)

一、外连接

外连接可分为:左连接、右连接、完全外连接。

1、左连接 left join 或 left outer join

SQL语句:select 表a.ab,表a.ac,表a.ad,表b.bc,表b.bd,表b.be from 表a left join 表b on 表a.ab=表b.bd执行结果以ab行为准:

表:ab ac ad bc bd be

1 1 2 1 7 8

2 3 4 0 0 0

3 5 6 3 9 10

其中b表bc第二行的值在ab中没有对应的所以左连无法找出来,同理右连会变成这样:

SQL语句:select 表a.ab,表a.ac,表a.ad,表b.bc,表b.bd,表b.be from 表a left join 表b on 表a.ab=表b.bd执行结果以bd行为准:

表:ab ac ad bc bd be

1 1 2 1 7 8

3 5 6 3 9 10

0 0 0 4 11 12

左外连接包含left join左表所有行,如果左表中某行在右表没有匹配,则结果中对应行右表的部分全部为0.

注:此时我们不能说结果的行数等于左表数据的行数。当然此处查询结果的行数等于左表数据的行数,因为左右两表此时为一对一关系。

右外连接包含right join右表所有行,如果左表中某行在右表没有匹配,则结果中对应左表的部分全部为0。

注:同样此时我们不能说结果的行数等于右表的行数。当然此处查询结果的行数等于左表数据的行数,因为左右两表此时为一对一关系。

3、完全外连接 full join 或 full outer join

SQL语句:select 表a.ab,表a.ac,表a.ad,表b.bc,表b.bd,表b.be from 表a full join 表b on 表a.ab=表b.bd执行结果:

表:ab ac ad bc bd be

1 1 2 1 7 8

2 3 4 0 0 0

3 5 6 3 9 10

0 0 0 4 11 12

完全外连接包含full join左右两表中所有的行,如果右表中某行在左表中没有匹配,则结果中对应行右表的部分全部为0,如果左表中某行在右表中没有匹配,则结果中对应行左表的部分全部为0。

二、内连接 join 或 inner join

SQL语句:select 表a.ab,表a.ac,表a.ad,表b.bc,表b.bd,表b.be from 表a inner join 表b on 表a.ab=表b.bdinner join 是比较运算符,只返回符合条件的行。

表:ab ac ad bc bd be

1 1 2 1 7 8

3 5 6 3 9 10

三、交叉连接 cross join

1.概念:没有 WHERE 子句的交叉联接将产生连接所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。

表a: ab

星期一

星期二

星期三

表b: cd

张三

李四

王五

SELECT a.ab,b.cd FROM 表a CROSS JOIN 表b

ab cd

星期一 张三

星期一 李四

星期一 王五

星期二 张三

星期二 李四

星期二 王五

星期三 张三

星期三 李四

星期三 王五

mysql如何两表查询?

两个表之间有相同的列吗?列名不一定相同,但值一定要是一致的那种。

如果没有,在两个表中添加相同列,使用关联进行查询,否则是达不到你的要求的。

查询的SQL语句:

select

t1.title,

t2.content

from

table1

as

t1,

table2

as

t2

where

t1.col

=

t2.col;

其中col是添加的可以关联的字段。

mysql 同时查两个表怎么做?

建议采用联合查询 join 而且使用全连接(FULL JOIN)方式

select *

from web_pian

FULL JOIN Orders

ON web_pian.mingcheng=web_shang.mingcheng

Order by web_pian.mingcheng

解释下:FULL Join 全连接将会输出所有的记录,即使有些空缺,和Left Join 左连接有所不同


文章标题:mysql怎么双表查询 mysql查两张表
网页网址:http://cdiso.cn/article/dohedeo.html

其他资讯