SQL查询:检索符合条件的列表

时间:2013-05-24 11:05:23

标签: sql

抱歉,我想不出更好的标题(或任何有意义的事情)。

我一直在尝试编写一个SQL查询,在那里我可以检索与学生Jaci Walker具有相同等级值的学生的姓名。

表的格式为:

STUDENT(id, Lname, Fname, Level, Sex, DOB, Street, Suburb, City, Postcode, State)

所以我知道Lname (Walker)Fname (Jaci),我需要找到Jaci Walker等级,然后输出一个具有相同等级的名字列表。

--Find Level of Jaci Walker
SELECT S.Fname, S.Name, S.Level
FROM Student S
WHERE S.Fname="Jaci" AND S.Lname="Walker"
GROUP BY S.Fname, S.Lname, S.Level;

我已经找到了如何检索Jaci Walker的级别,但不知道如何将其应用于其他查询。


谢谢大家的帮助, 在将其余查询添加到其中时,我只是坚持了一点。

https://www.dropbox.com/s/3ws93pp1vk40awg/img.jpg

SELECT S.Fname, S.LName
FROM Student S, Enrollment E, CourseSection CS, Location L
WHERE S.S_id = E.S_id
AND E.C_SE_ID = CS.C_SE_id
AND L.Loc_id = CS.Loc_ID
AND S.S_Level = (SELECT S.S_Level FROM Student S WHERE S.S_Fname = "Jaci" AND S.S_Lname = "Walker")
AND CS.C_SE_id = (SELECT CS.C_SE_id FROM CourseSection CS WHERE ?)
AND L.Loc_id = (SELECT L.Blodg_code FROM Location L WHERE L.Blodg_code = "BG");

5 个答案:

答案 0 :(得分:1)

试试这个:

SELECT S.Fname, S.Name, S.Level
FROM Student S
WHERE S.Level = 
    (SELECT Level
     FROM Student 
     WHERE Fname="Jaci" AND Lname="Walker"
    )

但你必须确保只有一名学生叫Jaci Walker ......

答案 1 :(得分:1)

您可以将查询重新用作子查询,以查找具有相同级别的其他条目。

SELECT Fname, Name
FROM Student
WHERE Level = (
    SELECT Level FROM Student S WHERE S.Fname="Jaci" AND S.Lname="Walker")

答案 2 :(得分:1)

您无需对结果进行分组。

试试这个

Select Fname,Lname from Student 
where Level=(Select Level 
             from Student 
             where Fname='Jaci' AND Lname='Walker' );

答案 3 :(得分:0)

我认为你不需要分组和所有人......

简单地说,

SELECT S.Fname, S.Name, S.Level FROM Student S WHERE S.LEVEL LIKE (SELECT LEVEL FROM STUDENT WHERE Fname="Jaci" AND Lname="Walker");

你在找同样的吗?

答案 4 :(得分:0)

试试这个:

SELECT S.Fname, S.Name, S.Level FROM Student s 
WHERE Level = 
(SELECT TOP 1 Level FROM Student WHERE Fname = "Jaci" and Lname = "Walker")

如果您不使用TOP 1,如果您的数据中有多个“Jaci Walker”,则此查询将失败。