MYSQL構文でよく使われる
3908 ワード
CREATE TABLE TT (ID INT, NAME VARCHAR(20));
CREATE TABLE TT AS SELECT * FROM CC;
2011-01-07 22:18:00
Mysqlのinner join,left join,right join詳細
まず公式の説明を借りて、
inner join(等値接続):2つのテーブルの結合フィールドが等しい行のみを返します.
left join(左結合):左テーブルのすべてのレコードと右テーブルの結合フィールドが等しいレコードを返します.
right join(右結合):右テーブルのすべてのレコードと左テーブルの結合フィールドが等しいレコードを返します.
mysql> create table account( id int ,name varchar(16));mysql> create account1 ( id int, sex int);
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| account |
| account1 |
+----------------+
2 rows in set (0.00 sec)
mysql> insert into account (id,name) values(1,'lee');
Query OK, 1 row affected (0.00 sec)
mysql> insert into account (id,name) values(2,'sophia');
Query OK, 1 row affected (0.00 sec)
mysql> insert into account (id,name) values(3,'unlown');
Query OK, 1 row affected (0.00 sec)
mysql> insert into account1 (id, sex) values (1,1);
Query OK, 1 row affected (0.00 sec)
mysql> insert into account1 (id, sex) values (2,0);
Query OK, 1 row affected (0.00 sec)
mysql> select * from account;
+------+--------+
| id | name |
+------+--------+
| 1 | lee |
| 2 | sophia |
| 3 | unlown |
+------+--------+
3 rows in set (0.00 sec)
mysql> select * from account1;
+------+------+
| id | sex |
+------+------+
| 1 | 1 |
| 2 | 0 |
+------+------+
2 rows in set (0.00 sec)
mysql> select * from account left join account1 on account.id = account1.id;+------+--------+------+------+
| id | name | id | sex |
+------+--------+------+------+
| 1 | lee | 1 | 1 |
| 2 | sophia | 2 | 0 |
| 3 | unlown | NULL | NULL |
+------+--------+------+------+
3 rows in set (0.00 sec)
the same as :
mysql> select * from account,account1 where account.id = account1.id;+------+--------+------+------+
| id | name | id | sex |
+------+--------+------+------+
| 1 | lee | 1 | 1 |
| 2 | sophia | 2 | 0 |
+------+--------+------+------+
2 rows in set (0.00 sec)
mysql> select * from account left join account1 on account.id = account1.id;
+------+--------+------+------+
| id | name | id | sex |
+------+--------+------+------+
| 1 | lee | 1 | 1 |
| 2 | sophia | 2 | 0 |
| 3 | unlown | NULL | NULL |
+------+--------+------+------+
3 rows in set (0.00 sec)
mysql> select * from account right join account1 on account.id = account1.id;
+------+--------+------+------+
| id | name | id | sex |
+------+--------+------+------+
| 1 | lee | 1 | 1 |
| 2 | sophia | 2 | 0 |
+------+--------+------+------+
2 rows in set (0.00 sec)
mysql> select * from account inner join account1 using
(id);
+------+--------+------+
| id | name | sex |
+------+--------+------+
| 1 | lee | 1 |
| 2 | sophia | 0 |
+------+--------+------+
2 rows in set (0.00 sec)