我有两张桌子Schools
和Users
餐桌学校
-----------------------------------------------------
| id | name | city | major | userID |
----------------------------------------------------|
| 1 | school A | chicago | CS | 1 |
----------------------------------------------------|
| 2 | school B | chicago | CS | 1 |
----------------------------------------------------|
| 3 | school A | chicago | CS | 2 |
----------------------------------------------------|
| 4 | school C | chicago | Art | 2 |
----------------------------------------------------|
| 5 | school B | chicago | CS | 3 |
----------------------------------------------------|
| 6 | school D | chicago | Math | 3 |
----------------------------------------------------|
| 7 | school A |New York | CS | 3 |
----------------------------------------------------|
| 8 | school B | chicago | Art | 3 |
-----------------------------------------------------
表用户
--------------------
| id | name |
____________________
| 1 | User A |
____________________
| 2 | User B |
____________________
| 3 | User C |
____________________
| 4 | User D |
____________________
| 5 | User E |
____________________
表中的userID
字段是表中字段schools
的外键。我想编写一个 MySQL 语句,它接受一个给定的并列出该用户的所有同学。id
users
userID
因此,对于上面的示例, User A
(ID#1) 的同学是与 上同一所学校User A
、位于同一学校city
并具有相同的用户major
。因此,有效的同学User A
只有User B
(ID#2) AND User C
(ID#3)。
现在,我正在使用两个 MySQL 语句来实现这个目标。第一个是这个
SELECT id FROM schools WHERE userID = '1'
其中列出了所有学校User A
。然后我使用 PHP 循环遍历结果并为每一行运行以下命令
SELECT userID from schools WHERE
name city LIKE '%$chicago%'
AND name LIKE '%$school A%'
AND major LIKE '%$CS%'
这可以正常工作并返回正确的用户 ID 列表。但是,我想知道是否有一种更有效的方法可以在一条 SQL 语句中执行此操作而无需使用 PHP。