【发布时间】:2015-07-24 10:42:41
【问题描述】:
我正在学习自联接并有这个简单的表:
+-----------+-------------+
| name | location |
+-----------+-------------+
| Robert | Guadalajara |
| Manuel | Guadalajara |
| Dalia | Guadalajara |
| Alejandra | Guadalajara |
| Luis | Guadalajara |
| Monica | Guadalajara |
| Claudia | Guadalajara |
| Scartlet | Guadalajara |
| Sergio | Guadalajara |
| Rick | Mexico City |
| Rene | Mexico City |
| Ramon | Culiacan |
| Junior | Culiacan |
| Kasandra | Culiacan |
| Emma | Culiacan |
| Johnatha | Dunedin |
| Miriam | Largo |
| Julie | Largo |
+-----------+-------------+
我们的目的是找到所有与“罗伯特”位于同一位置的人。
使用自我加入,我看到以下工作是通过阅读此处的解决方案,但是,我不明白发生了什么,如果他们问我它是如何工作的,我也无法向其他人解释:
SELECT users1.name
FROM users users1, users users2
WHERE users1.location = users2.location
AND users2.name = 'Robert';
正确返回如下结果:
+-----------+
| name |
+-----------+
| Robert |
| Manuel |
| Dalia |
| Alejandra |
| Luis |
| Monica |
| Claudia |
| Scartlet |
| Sergio |
+-----------+
我不明白具体是AND users2.name = 'Robert' 在返回正确结果中的作用。
谁能一步一步解释MySql如何处理表表达式和谓词:
WHERE users1.location = users2.location
AND users2.name = 'Robert';
返回正确的结果。
【问题讨论】:
-
请查看下面给出的答案,谢谢。