我想了解SQL自连接。我有以下表“人”具有名字,姓氏,地址和雇员的城市(来源W3Schools的):了解SQL自加入
mysql> select * from persons;
+------+-----------+-----------+--------------+-----------+
| P_id | LastName | FirstName | Address | City |
+------+-----------+-----------+--------------+-----------+
| 1 | Hansen | Ola | Timoteivn 10 | Sandnes |
| 2 | Svendson | Tove | Borgvn 23 | Sandnes |
| 3 | Pettersen | Kari | Storgt 20 | Stavanger |
+------+-----------+-----------+--------------+-----------+
我现在想返回具有相同的城市作为的雇员的姓名“汉森奥拉'。所以我写了一个自连接,它工作正常:
mysql> select p1.Lastname, p1.firstname from persons p1, persons p2 where p1.city = p2.city and p2.lastname = 'Hansen';
+----------+-----------+
| Lastname | firstname |
+----------+-----------+
| Hansen | Ola |
| Svendson | Tove |
+----------+-----------+
但是,如果我别名P2变更为P1即p2.lastname =“汉森”到p1.lastname =“汉森”,然后我不t取得两名雇员的姓名。
mysql> select p1.Lastname, p1.firstname from persons p1, persons p2 where p1.city = p2.city and p1.lastname = 'Hansen';
+----------+-----------+
| Lastname | firstname |
+----------+-----------+
| Hansen | Ola |
| Hansen | Ola |
+----------+-----------+
有人请帮我理解为什么改变别名从p2到p1会改变结果吗?谢谢。
谢谢。我现在明白了。 – 2013-03-04 06:16:20