什么是mysql中的self join用于

时间:2012-01-23 11:07:24

标签: mysql

什么是自我加入?为什么我们需要这种自我加入?我到目前为止从未使用过自我加入。

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

有很多原因,网上有大量的例子

http://www.udel.edu/evelyn/SQL-Class3/SQL3_self.html

答案 2 :(得分:0)

mysql> SELECT * FROM pr WHERE id>80;
+----+------+--------+
| id | ids  | status |
+----+------+--------+
| 81 |    4 |      4 |
| 82 |    2 |      3 |
| 83 |    2 |      4 |
+----+------+--------+
3 rows in set (0.00 sec)

mysql> SELECT * FROM pr WHERE id<18;
+----+------+--------+
| id | ids  | status |
+----+------+--------+
|  1 |    1 |      1 |
|  5 | NULL |      2 |
+----+------+--------+
2 rows in set (0.01 sec)

相同的请求:

mysql> SELECT * FROM pr AS t1 ,pr AS t2 WHERE t1.id<18 AND t2.id>80;
+----+------+--------+----+------+--------+
| id | ids  | status | id | ids  | status |
+----+------+--------+----+------+--------+
|  1 |    1 |      1 | 81 |    4 |      4 |
|  5 | NULL |      2 | 81 |    4 |      4 |
|  1 |    1 |      1 | 82 |    2 |      3 |
|  5 | NULL |      2 | 82 |    2 |      3 |
|  1 |    1 |      1 | 83 |    2 |      4 |
|  5 | NULL |      2 | 83 |    2 |      4 |
+----+------+--------+----+------+--------+
6 rows in set (0.00 sec)

mysql> SELECT * FROM pr AS t1 JOIN pr AS t2 ON t1.id<18 AND t2.id>80;
+----+------+--------+----+------+--------+
| id | ids  | status | id | ids  | status |
+----+------+--------+----+------+--------+
|  1 |    1 |      1 | 81 |    4 |      4 |
|  5 | NULL |      2 | 81 |    4 |      4 |
|  1 |    1 |      1 | 82 |    2 |      3 |
|  5 | NULL |      2 | 82 |    2 |      3 |
|  1 |    1 |      1 | 83 |    2 |      4 |
|  5 | NULL |      2 | 83 |    2 |      4 |
+----+------+--------+----+------+--------+
6 rows in set (0.00 sec)