如果列B =列C,如何使用SQL's JOIN选择列A ?


How do I use SQL's JOIN to select column A if column B = column C?

我试图使用SQL的JOIN查询从我的成员表中选择一些东西,如果来自朋友表的东西等于来自成员表的其他东西。

让我稍微扩展一下。

如果friends.user_id friends.friend_id = $variable,则select members.username where $variable = members.id,然后将所有这些数据放入数组($array = array()。没有花哨的)。

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

感谢所有的帮助!

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

SQL Fiddle DEMO

上面的示例将向您展示两个语句之间的区别。

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

Introduction to JOINs - Basic of JOINs

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, friends f
WHERE m.id = f.user_id
  AND $variable IN (f.user_id, f.friend_id)

SQLFiddle .