gpt4 book ai didi

mysql - 具有双重嵌套级别的 SQL 查询

转载 作者:太空宇宙 更新时间:2023-11-03 12:05:43 25 4
gpt4 key购买 nike

我正在学习斯坦福免费在线类(class)(我推荐!),但我遇到了以下问题。请帮忙。

找出所有与名叫加布里埃尔的人是 friend 的学生的名字。

这是我能想到的最好的办法。

select name 
from highschooler h
where h.id exists in (
select friend.id1
from friend
where friend.id2 exists in (
select h.id
from highschooler h2
where h2.name="gabriel"
)
);

我需要在 SQL Lite 中运行查询,尽管我使用 MySQL Workbench 作为测试场所(我知道它们对于像这样的基本查询相对相似)。

/* Create the schema for our tables */
create table Highschooler(ID int, name text, grade int);
create table Friend(ID1 int, ID2 int);
create table Likes(ID1 int, ID2 int);

/* Populate the tables with our data */
insert into Highschooler values (1510, 'Jordan', 9);
insert into Highschooler values (1689, 'Gabriel', 9);
insert into Highschooler values (1381, 'Tiffany', 9);
insert into Highschooler values (1709, 'Cassandra', 9);
insert into Highschooler values (1101, 'Haley', 10);
insert into Highschooler values (1782, 'Andrew', 10);
insert into Highschooler values (1468, 'Kris', 10);
insert into Highschooler values (1641, 'Brittany', 10);
insert into Highschooler values (1247, 'Alexis', 11);
insert into Highschooler values (1316, 'Austin', 11);
insert into Highschooler values (1911, 'Gabriel', 11);
insert into Highschooler values (1501, 'Jessica', 11);
insert into Highschooler values (1304, 'Jordan', 12);
insert into Highschooler values (1025, 'John', 12);
insert into Highschooler values (1934, 'Kyle', 12);
insert into Highschooler values (1661, 'Logan', 12);

insert into Friend values (1510, 1381);
insert into Friend values (1510, 1689);
insert into Friend values (1689, 1709);
insert into Friend values (1381, 1247);
insert into Friend values (1709, 1247);
insert into Friend values (1689, 1782);
insert into Friend values (1782, 1468);
insert into Friend values (1782, 1316);
insert into Friend values (1782, 1304);
insert into Friend values (1468, 1101);
insert into Friend values (1468, 1641);
insert into Friend values (1101, 1641);
insert into Friend values (1247, 1911);
insert into Friend values (1247, 1501);
insert into Friend values (1911, 1501);
insert into Friend values (1501, 1934);
insert into Friend values (1316, 1934);
insert into Friend values (1934, 1304);
insert into Friend values (1304, 1661);
insert into Friend values (1661, 1025);
insert into Friend select ID2, ID1 from Friend;

insert into Likes values(1689, 1709);
insert into Likes values(1709, 1689);
insert into Likes values(1782, 1709);
insert into Likes values(1911, 1247);
insert into Likes values(1247, 1468);
insert into Likes values(1641, 1468);
insert into Likes values(1316, 1304);
insert into Likes values(1501, 1934);
insert into Likes values(1934, 1501);
insert into Likes values(1025, 1101);

非常感谢任何帮助!

最佳答案

为此,您需要两次引用 Highschooler 表,基本上建立关系 Highschooler -> Friend -> Highschooler

方法如下:

select h1.name
from Highschooler h1
inner join Friend f on f.ID1 = h1.ID
inner join Highschooler h2 on f.ID2 = h2.ID
where h2.name = 'Gabriel'

这是一个 SQL Fiddle上面的查询。

关于mysql - 具有双重嵌套级别的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26704666/

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