Tables:
users friends
+-------+----+ +-----+-----+
| name | id | | id1 | id2 |
+-------+----+ +-----+-----+
| user1 | 1 | | 1 | 2 |
+-------+----+ +-----+-----+
| user2 + 2 |
+-------+----+
在我的数据库id1
表格中friends
是显性列,这意味着如果id1 = 1
和id2 = 2
则user1
是user2
的朋友users
1}}但不是相反。
我正在尝试从X
表中选择id1
表中friends
userX
SELECT * FROM users LEFT JOIN friends ON users.id != friends.id2 WHERE friends.id1 = X AND users.id != X;
作为users.id != X
的所有用户。这是因为我不希望 <section class="about">
<div class="container">
<div class="row">
<div class="one-third column">
<img class="u-max-full-width" src="images/person.png" alt="Person" height="300" width="200">
</div>
<div class="two-thirds column">
<h4>About</h4>
<p>Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem.</p>
<p>Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna.
Sed consequat, leo eget bibendum sodales, augue velit cursus nunc</p>
</div>
</div>
</div>
</section>
能够找到他已经添加的朋友。
这是我失败的尝试:
{{1}}
我添加了{{1}},因为我们不想在搜索其他用户时自行返回用户。
答案 0 :(得分:1)
您可以使用外部联接来执行此操作,您尝试进入正确的方向:
select u.*
from users u
left join friends f
on u.id = f.id2
where f.id1 is null
外部联接至少为每个不匹配的项目返回NULL
。
答案 1 :(得分:0)
使用not in()
(more efficient than not exists()
in mysql)
select *
from users
where id != xi
and id not in (
select id.2
from friends
where friends.id1 = x
)
使用not exists()
select *
from users
where id != x
and not exists (
select 1
from friends
where friends.id1 = x
and friends.id2 = users.id
)