Php 如果列B=列C,如何使用SQL的联接选择列A?

Php 如果列B=列C,如何使用SQL的联接选择列A?,php,sql,Php,Sql,如果friends表中的内容与members表中的其他内容相等,我尝试使用SQL的JOIN查询从members表中选择一些内容 让我再详细说明一下 如果friends.user\u id或friends.friends\u id=$variable,则选择members.username,其中$variable=members.id,然后将所有数据放入数组$array=array。没什么特别的 我不知道从哪里开始如果你不知道的话我是新手 感谢您的帮助 像这样的东西怎么样 SELECT membe

如果friends表中的内容与members表中的其他内容相等,我尝试使用SQL的JOIN查询从members表中选择一些内容

让我再详细说明一下

如果friends.user\u id或friends.friends\u id=$variable,则选择members.username,其中$variable=members.id,然后将所有数据放入数组$array=array。没什么特别的

我不知道从哪里开始如果你不知道的话我是新手


感谢您的帮助

像这样的东西怎么样

SELECT members.username
FROM   members, friends
WHERE  (friends.user_id = members.id
        OR friends.friend_id = members.id) AND
       members.id = $variable
SELECT  m.username
FROM    members m INNER JOIN
    friends f   ON  m.id IN (f.user_id,f.friend_id)
WHERE   m.id = $variable
我注意到,基于表中的数据,上面可能返回多个条目,因此这里是另一个示例

SELECT  m.username
FROM 
members m
WHERE m.id = 2    
AND     EXISTS  (
            SELECT  1 
            FROM    friends f 
            WHERE m.id IN (f.user_id,f.friend_id)
        )
上面的示例将向您展示这两个语句之间的差异

这篇文章有一些很好的连接的可视化表示,并且总是很方便

这应该起作用:

SELECT m.username
FROM members m, friends f
WHERE m.id = f.user_id
  AND $variable IN (f.user_id, f.friend_id)

.

这个答案似乎不正确。OP请求具有给定id的用户或朋友数组。在您的解决方案中,它将始终返回单个id,因为members.id似乎是主键。无需担心!我刚刚将m.id=$variable更改为m.id$variable。非常感谢!如果必须将查询更改为使用而不是=,则意味着存在严重错误。你可能已经很幸运了,而且它恰好在你当前的输入上工作。但这是一个危险的命题。无论如何,它认为接受完全不正确或错误的答案是不好的做法。您应该编辑此答案,使其与用于工作解决方案的答案完全相同-然后答案接受就可以了,因为这样它就变得正确了。