gpt4 book ai didi

php - MySQL 获取相关用户

转载 作者:行者123 更新时间:2023-11-29 03:42:43 25 4
gpt4 key购买 nike

我有两个表 SchoolsUsers

表学校

-----------------------------------------------------
| 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 |
____________________

schools 表中的userID 字段是users 表中id 字段的外键.我想编写一个 MySQL 语句,它接受给定的 userID 并列出该用户的所有同学。

因此,对于上面的示例,用户 A (ID#1) 的同学是与 用户 A 就读同一所学校的用户,位于在同一个城市,并且有相同的专业。因此,用户 A 的有效同学只有 用户 B (ID#2) 和 用户 C (ID#3)。

现在,我正在使用两个 MySQL 语句来实现这个目标。第一个是这个

SELECT id FROM schools WHERE userID = '1'

其中列出了用户 A 的所有学校。然后我使用 PHP 循环遍历结果,并为每一行运行以下命令

    SELECT userID from schools WHERE 
name city LIKE '%$chicago%'
AND name LIKE '%$school A%'
AND major LIKE '%$CS%'

这工作正常并返回正确的用户 ID 列表。但是,我想知道是否有一种更有效的方法可以在一个 SQL 语句中执行此操作而无需使用 PHP。

最佳答案

你可以这样做:

select distinct u.name
from Users u
join School s on s.userID = u.id
join (
select distinct s.name, s.city
from School s
inner join Users u on u.id = s.userID
where u.name = 'User A'
) aux on s.name = aux.name and s.city = aux.city
where u.name <> 'User A'

aux 查询中,您选择 @usernamecity 以及然后选择具有这些要求的所有 users,而不是 @user 本身。

您可以用变量替换“用户 A”。

关于php - MySQL 获取相关用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11365665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com