比较两条记录的条件下的mysql联接表

比较两条记录的条件下的mysql联接表,mysql,sql,Mysql,Sql,我正在尝试创建一个左连接,其中包含一个on语句,该语句在两个记录中都有要求。本质上,我试图通过groupId和userId确定两个用户是否是一个组的成员 这就是我开始的地方 LEFT JOIN groups AS g1 ON g1.status = "active" AND g1.userId = "user1" LEFT JOIN groups AS g2 ON g2.status = "active" AND g1.groupId = g2.groupId AND g2.userId = "

我正在尝试创建一个左连接,其中包含一个on语句,该语句在两个记录中都有要求。本质上,我试图通过groupIduserId确定两个用户是否是一个组的成员

这就是我开始的地方

LEFT JOIN groups AS g1 ON g1.status = "active" AND g1.userId = "user1"
LEFT JOIN groups AS g2 ON g2.status = "active" AND g1.groupId = g2.groupId AND g2.userId = "user2"
两个联接的问题是,第一个联接将选择满足此条件的第一个可用记录。由于groupId,将从第一个联接生成第二个联接。如果第二个的groupId相同,这可能会起作用。然而,情况并非如此,因为用户可以是一群不同组的成员。本质上,我试图创建一个join语句,试图在两个用户之间找到一个类似的组(通过groupId)。如果组不存在,则返回null(我使用left join的原因)

我如何创建一个连接来比较两个记录之间相似的groupId

谢谢

这是整个查询

SELECT u*, code.description AS statusText...., CASE WHEN u.id = "ME" THEN 1 ELSE g2.groupId END AS public
FROM users AS u
LEFT JOIN codes AS code ON code.code = u.status
LEFT JOIN groups AS g1 ON g1.status = "active" AND g1.userId = u.id
LEFT JOIN groups AS g2 ON g2.status = "active" AND g1.groupId = g2.groupId AND g2.userId = "ME"
WHERE u.id = :u
LIMIT 1
其中ME等于您的用户登录名,u是我们正在查找的用户

本质上,我试图比较您和其他用户是否属于同一组

结果看起来像一个包含以下详细信息的数组

[userId] => 1
[date] => 2015-06-16 00:00:00
[player] => first name
[email] => email 
....
[public] => 1   <- this is the important variable i am trying to get. I want to return a number that i will treat as a boolean. The number tells me that i have a group in common with the user i am looking up
从这个表数据示例中,您可以看到用户1和用户6属于同一组。如果这是表中唯一的数据,那么我的join语句将起作用。然而,情况并非如此,如果用户1和我都是组5的一部分,我的语句将失败


我不想使用子查询

也许可以共享整个查询?编辑您的问题并提供示例数据和所需结果。我只是在用子查询编写答案。这是最简单的方法。您可能会想出一种不使用子查询的奇特方法,但这里可能没有避免使用子查询的正当理由。@ers81239我愿意看一看-写评论的时间可能比写语句的时间长-thx@iPoo哦,你说你意识到你可以那样做,所以我没必要为你做!
| userId | groupId | colum1 | ...  | 
+--------+---------+--------+------+
|    1   |    1    |    1   | ALL  | 
+--------+---------+--------+------+
|    1   |    5    |    1   | NONE | 
+--------+---------+--------+------+
|    6   |    1    |    1   | ALL  | 
+--------+---------+--------+------+
|    2   |    3    |    1   | NONE | 
+--------+---------+--------+------+