gpt4 book ai didi

mysql - 使用 mySQL join 来选择喜欢的信息

转载 作者:行者123 更新时间:2023-11-30 23:03:00 26 4
gpt4 key购买 nike

标题很难写,我担心它没有解释太多!

基本上我有一个表,我们称它为链接

链接由这些列组成(我将添加测试数据,分开查看):

linksid | folderid | link
1 1 www.example.com
2 1 www.anotherexample.com

3 2 www.example.com
4 2 www.anotherexample.com
5 2 www.auniquewebsite.com

现在我想做的是从 folderid 2 获取唯一网站,因为该文件夹有 2 个链接也存在于 folderid 1 - 我想为用户创建一个建议。

到目前为止我有:

  SELECT b.folderid, b.link FROM Links b

LEFT OUTER JOIN Links a

ON a.link = b.link AND a.folderid <> b.folderid

WHERE (a.folderid = 1)

但是这个查询只显示这些结果,因为没有选择器可以对类似的匹配项做任何事情:

linksid | folderid | link
1 1 www.example.com
2 1 www.anotherexample.com

3 2 www.example.com
4 2 www.anotherexample.com

我一直在尝试其他一些选择器(比如 and a.link IS null),但它们都没有结果。理想情况下,我希望获得唯一链接,并且仅当同一文件夹中的至少 2 个链接与搜索来源文件夹匹配时

我觉得我从错误的角度来处理这个问题,有人有任何提示可以将我推向正确的方向吗?

最佳答案

如果我理解正确,您需要 folder = 2 的行,而 folder = 1 不存在。这是使用 left outer join 的一种方法:

select l2.*
from Links l2 left outer join
Links l1
on l2.link = l1.link and
l1.folder = 1
where l2.folder = 2 and l1.link is null;

编辑:

如果您想要文件夹的所有“不匹配”链接与文件夹 1 的所有链接相匹配,那么查询就更复杂了。以下获取包含 l1 的所有链接的文件夹,然后可能还有更多:

select l2.folder
from links l1 left outer join
links l2
on l1.link = l2.link
where l1.folder = 1
group by l2.folder
having sum(l2.link is null) = 0;

要获取不在文件夹 1 中的所有链接,请使用子查询和更多逻辑:

select l.*
from (select l2.folder
from links l1 left outer join
links l2
on l1.link = l2.link
where l1.folder = 1
group by l2.folder
having sum(l2.link is null) = 0
) l2 join
links l
on l2.folder = l.folder
where not exists (select 1
from links l1
where l1.folder = 1 and
l1.link = l.link
);

关于mysql - 使用 mySQL join 来选择喜欢的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23152345/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com