mysql join表连接

1.表连接,就是将两个表合并起来,被合并的表的记录要通过中间字段,一一匹配起来左边的表的记录,形成一张临时的合并的表,并且每条记录的值都是两张表一一准确对应的

实例

尝试以下实例:

[email protected]# mysql -u root -p password;
Enter password:*******
mysql> use RUNOOB;
Database changed
mysql> SELECT * FROM tcount_tbl;
+-----------------+----------------+
| runoob_author | runoob_count |
+-----------------+----------------+
| mahran          |             20 |
| mahnaz          |           NULL |
| Jen             |           NULL |
| Gill            |             20 |
| John Poul       |              1 |
| Sanjay          |              1 |
+-----------------+----------------+
6 rows in set (0.01 sec)
mysql> SELECT * from runoob_tbl;
+-------------+----------------+-----------------+-----------------+
| runoob_id | runoob_title | runoob_author | submission_date |
+-------------+----------------+-----------------+-----------------+
|           1 | Learn PHP      | John Poul       | 2007-05-24      |
|           2 | Learn MySQL    | Abdul S         | 2007-05-24      |
|           3 | JAVA Tutorial  | Sanjay          | 2007-05-06      |
+-------------+----------------+-----------------+-----------------+
3 rows in set (0.00 sec)
mysql>

接下来我们就使用MySQL的INNER JOIN(也可以省略 INNER 使用 JOIN,效果一样)来连接以上两张表来读取runoob_tbl表中所有runoob_author字段在tcount_tbl表对应的runoob_count字段值:

mysql> SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a INNER JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;
+-----------+---------------+--------------+
| runoob_id | runoob_author | runoob_count |
+-----------+---------------+--------------+
|         1 | John Poul     |            1 |
|         3 | Sanjay        |            1 |
+-----------+---------------+--------------+
2 rows in set (0.00 sec)

以上 SQL 语句等价于:

mysql> SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a, tcount_tbl b WHERE a.runoob_author = b.runoob_author;
+-------------+-----------------+----------------+
| runoob_id | runoob_author | runoob_count |
+-------------+-----------------+----------------+
|           1 | John Poul       |              1 |
|           3 | Sanjay          |              1 |
+-------------+-----------------+----------------+
2 rows in set (0.01 sec)
mysql>

MySQL LEFT JOIN

MySQL left join 与 join 有所不同。 MySQL LEFT JOIN 会读取左边数据表的全部数据,即便右边表无对应数据。

实例

尝试以下实例,以 runoob_tbl 为左表,tcount_tbl 为右表,理解MySQL LEFT JOIN的应用:

[email protected]# mysql -u root -p password;
Enter password:*******
mysql> use RUNOOB;
Database changed
mysql> SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a LEFT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;
+-------------+-----------------+----------------+
| runoob_id | runoob_author | runoob_count |
+-------------+-----------------+----------------+
|           1 | John Poul       |              1 |
|           2 | Abdul S         |           NULL |
|           3 | Sanjay          |              1 |
+-------------+-----------------+----------------+
3 rows in set (0.02 sec)
 
时间: 2024-12-30 03:28:25

mysql join表连接的相关文章

Mysql 多表连接查询 inner join 和 outer join 的使用

JOIN的含义就如英文单词"join"一样,连接两张表,大致分为内连接,外连接,右连接,左连接,自然连接.这里描述先甩出一张用烂了的图,然后插入测试数据. 首先先列举本篇用到的分类(内连接,外连接,交叉连接)和连接方法(如下): A)内连接:join,inner join B)外连接:left join,left outer join,right join,right outer join,union C)交叉连接:cross join 案例表: t_users: t_departme

MySQL多表连接

1.内联接 典型的联接运算,使用像 =  或 <> 之类的比较运算).包括相等联接和自然联接. 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和courses表中学生标识号相同的所有行. 2.外联接. 外联接可以是左向外联接.右向外联接或完整外部联接.     在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:     1)LEFT  JOIN或LEFT OUTER JOIN     左向外联接的结果集包括  LEFT OUTER子句中

MySQL多表连接查询

多表连接查询: create table class( cid int primary key auto_increment, cname varchar(20) )default charset='utf8'; create tablr stu( sid int primary key auto_increment, sname varchar(20). cid int );default charset='utf8'; insert into class(name) values('一班')

Hive的join表连接查询的一些注意事项

Hive支持的表连接查询的语法: 1 join_table: 2 table_reference JOIN table_factor [join_condition] 3 | table_reference {LEFT|RIGHT|FULL} [OUTER] JOIN table_reference join_condition 4 | table_reference LEFT SEMI JOIN table_reference join_condition 5 | table_referenc

mysql的表连接(left|right)join

测试MYSQL表关于内外连接 表一:雇员表(雇员ID,雇员名称,雇员入职时间,薪水,部门号) create table empo( empoid int(6)  not null  primary key auto_increment, empname varchar(32) not null, empdate datetime not null, salary int(6) not null , deptno int(6) not null )engine=innodb  charset=ut

mysql的表连接( left | right )join

测试MYSQL表关于内外连接 表一:雇员表(雇员ID,雇员名称,雇员入职时间,薪水,部门号) create table empo( empoid int(6)  not null  primary key auto_increment, empname varchar(32) not null, empdate datetime not null, salary int(6) not null , deptno int(6) not null )engine=innodb  charset=ut

MySQL 多表连接内连接

自考题目讲解,专业请绕道 1.等值连接,在FROM子句中使用关键字INNER   JOIN或JOIN 连接两张表时,如若ON子句的连接条件中使用运算符 = 符号,即进行相等性测试,则此连接方式称为等值连接,也称为相等连接. 2.非等值连接,在FROM子句中使用关键字INNER JOIN 或JOIN 连接两张表时,如若在ON子句的连接条件中使用除运算符  =  之外的其他比较运算符,即进行不相等等性测试,则此连接方式称为非等值连接,也称为不等连接 3.自连接,在FROM子句中使用关键字INNER 

MySQL多表连接删除问题

DELETE是一个蛮慎重的SQL操作,一般来说这样删除操作都需要谨慎小心,以免造成不必要的损失. DELETE有下面这几种情况: ?  delete from t1 where 条件 ?  delete t1 from t1 where 条件 ?  delete t1 from t1,t2 where 条件 ?  delete t1,t2 from t1,t2 where 条件 简单地说就是delete语句是无法进行多表删除数据操作,不过可以通过建立级联删除,在两个表之间建立级联删除关系,来实现

SQL Server T—SQL 表连接

一  笛卡尔积 select  *  from  表1,表2 将两表的记录遍历显示 二表的横向连接 1   使用外键关系作为条件 select  *  from   表1,表2  where   表1表2的外键约束关系 select  列1,列2,  from   表1,表2  where   表1表2的外键约束关系 2  join  on select  *  from   表1  join  表2  on   表1表2的外键约束关系 select  列1,列2  from  表1  join