gpt4 book ai didi

mysql - SQL 查询返回子查询的精确列表

转载 作者:可可西里 更新时间:2023-11-01 08:24:19 25 4
gpt4 key购买 nike

所以我得到了这个问题:

考虑下表中的粗体键:Professor(profid, profname, department) Student(studid, studname, major) 和 Advise(profid , studid).

返回与 id 为 '123456789' 的学生有完全相同导师的学生的姓名。

我提出的查询不会返回完全相同的顾问,而是返回学生 123456789 和其他学生之间共有的顾问。例如,如果学生 123456789 有顾问 1 和 2,而学生 5 只有顾问 1,我当前的查询将返回学生 5,这是不正确的。该查询只应返回同时具有顾问 1 和 2 的学生。到目前为止,这是我的查询:

SELECT studname
FROM Student
WHERE studid IN
(
SELECT DISTINCT studid
FROM Advise
WHERE profid IN
(
SELECT profid
FROM Advise
WHERE studid = '123456789'
)
);

我怎样才能让这个查询返回建议学生 123456789 的学生的确切列表?

最佳答案

我测试它运行正常。你可以试试:

SELECT a.studid, b.studname
FROM (
SELECT studid, COUNT(studid) AS numstud
FROM Advise
WHERE
profid IN (
SELECT profid FROM Advise WHERE studid = 123456789
) AND
studid NOT IN (
SELECT studid FROM Advise WHERE profid NOT IN (
SELECT profid FROM Advise WHERE studid = 123456789
)
)
GROUP BY studid
HAVING numstud = (SELECT COUNT(*) FROM Advise WHERE studid = 123456789)
) AS a LEFT JOIN Student AS b ON (a.studid = b.studid)

关于mysql - SQL 查询返回子查询的精确列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47805359/

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