使用带多个条件的左连接SQL

使用带多个条件的左连接SQL,sql,outer-join,Sql,Outer Join,我正在尝试创建一个应用程序,该应用程序将显示所有其他非登录用户或登录用户未遵循的用户(如浏览页面),但我在编写SQL查询时遇到了问题 我的表格设置为: following(username1, username2) (意思是username1跟在username2后面) 及 现在我正在尝试做一些类似的事情: SELECT * FROM users u LEFT JOIN following f ON ( u.username != 'loggedInUser' AND f.usern

我正在尝试创建一个应用程序,该应用程序将显示所有其他非登录用户或登录用户未遵循的用户(如浏览页面),但我在编写SQL查询时遇到了问题

我的表格设置为:

following(username1, username2)
(意思是username1跟在username2后面)

现在我正在尝试做一些类似的事情:

SELECT * FROM
users u 
LEFT JOIN following f ON (
  u.username != 'loggedInUser'
  AND f.username1 = 'loggedInUser'
  AND f.username2 = u.username
)
我在Python脚本中替换了
loggedInUser


不幸的是,此查询当前正在返回我的所有用户,不应该返回。由于某种原因,我在使用此逻辑时遇到了很多问题,有人对此有什么见解吗?

这将显示不是
登录用户的所有其他用户,以及
登录用户不遵循的(非或):


如果您需要获取所有未被登录用户跟踪的用户,请尝试下面的脚本

SELECT * FROM
users u 
where u.username in(select username2 from following where username1!= 'loggedInUser')
and u.username!='loggedInUser'

为什么不在位类型的用户中创建一个新列,当任何用户登录时,该列将被更新。然后你只需要写一个简单的查询

从loggedIn=1的用户中选择*


这将返回具有登录状态的所有用户数据

示例数据,其输出是helpfulLearn left join返回的内容:内部联接行加上由null扩展的不匹配的左表行。始终知道作为左连接的一部分,您需要什么样的内部连接。这似乎并没有解决问题的要点,即包括以下
表中链接的用户。我已经向她解释了另一种工作方式,这可能对她有所帮助。做同一件事有多种方法,我已经向她解释了简单有效的方法。
SELECT * 
FROM users u 
WHERE u.username <> 'loggedInUser'
    AND NOT EXISTS (
            SELECT 1
            FROM following f
            WHERE f.username1 = 'loggedInUser'
                AND f.username2 = u.username
        );
SELECT DISTINCT u.* 
FROM users u 
INNER JOIN following f 
ON f.username1 <> 'loggedInUser'
    OR f.username2 <> u.username
WHERE u.username <> 'loggedInUser';
SELECT * FROM
users u 
LEFT JOIN following f ON u.[insert_primary_key_here]=f.[insert_foreign_key_here] 
WHERE u.username != 'loggedInUser'
AND f.username1 = 'loggedInUser'
AND f.username2 = u.username
SELECT * FROM
users u 
where u.username in(select username2 from following where username1!= 'loggedInUser')
and u.username!='loggedInUser'