gpt4 book ai didi

SQL 查询 JOIN 或 IN 运算符?

转载 作者:行者123 更新时间:2023-12-02 07:26:32 25 4
gpt4 key购买 nike

我有两张 table , friend 。FRIENDS 有字段 NAME 和 SURNAME。

一个人有N个 friend 。

我想检索所有至少有两个 friend 的人,一个名字为“mark”,另一个名字为“rocco”,姓氏为“siffredi”。

示例:如果我有一个人有 5 个 friend ,其中一个叫 mark,没有一个叫 rocco siffredi,则不返回任何表格。

我在想:

SELECT * FROM person p
JOIN friends AS f ON p.ID=f.personID
WHERE f.name ="mark" AND f IN
( SELECT * from FRIENDS WHERE name="rocco" and surname="siffredi")

SELECT * FROM person p
JOIN friends AS f1 ON p.ID=f1.personID
JOIN friends AS f2 ON p.ID=f2.personID
WHERE f1.name="mark" AND f2.name="rocco" AND f2.surname="siffredi"

什么是最好的方法?我的意思是执行它的最快方法。我不关心可读性。还有其他方法可以执行此查询吗?泰。

编辑:在 ID 上添加了连接...

最佳答案

我不得不猜测你的列名并制作一个表格:

使用 EXISTS:

CREATE table FRIENDS(person_id INT, friend_id INT)

go

SELECT *
FROM person
WHERE
EXISTS
(SELECT *
FROM friends f
JOIN person per
ON f.friend_id = per.id
WHERE
per.name ='mark' AND
person.id = f.person_id) AND
EXISTS
(SELECT *
FROM friends f
JOIN person per
ON f.friend_id = per.id
WHERE
per.name = 'rocco' AND
per.surname='siffredi' AND
person.id = f.person_id)

关于SQL 查询 JOIN 或 IN 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28025432/

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