Selecting rows from a table that have the same value for one field

安稳与你 提交于 2019-12-06 12:24:57

问题


I have a MySQL database with these two tables:

Tutor(tutorId, initials, lastName, email, phone, office)
Student(studentId, initials, lastName, email, tutorId)

What is the query to return the initials and last names of any student who share the same tutor?

I tried SELECT intials, lastName FROM Student WHERE tutorId = tutorId but that just returns the names of all students.


回答1:


You'll have to join students against itself:

SELECT s1.initials, s1.lastName
FROM Student s1, Student s2
WHERE s1.studentId <> s2.studentID /* Every student has the same tutor as himself */
AND s1.tutorId = s2.tutorid

If you want to output the pairs:

SELECT s1.initials, s1.lastName, s2.initials, s2.lastName
FROM Student s1, Student s2
WHERE s1.studentId <> s2.studentID /* Every student has the same tutor as himself */
AND s1.tutorId = s2.tutorid

To get a list of Tutor - Students:

SELECT tutorId, GROUP_CONCAT( initials, lastName SEPARATOR ', ') 
FROM `Student` 
GROUP BY tutorId
/* to only show tutors that have more than 1 student: */
/* HAVING COUNT(studentid) > 1 */



回答2:


SELECT Tutor.tutorId, Student.initials, Student.lastName FROM Student INNER JOIN Tutor ON Tutor.tutorId = Student.tutorId GROUP BY tutorId

This will return (not tested, but it should) a list of student initials and last names grouped by tutorId. Is that what you want?




回答3:


Join Student table to itself

SELECT S1.intials, S1.lastName
FROM Student S1, Student S2 
WHERE S1.tutorId = S2.tutorId 
AND S1.studentId <> S2.studentId



回答4:


this is the query in SQL Server, im sure the idea is very close to mySql:

 select s1.initials,s1.lastname,s2.initials,s2.lastname from students s1 inner join students s2 on s1.tutorid= s2.tutorid and s1.studentid <> s2.studentid



回答5:


You will have to make a query for every single tutorId. Pseudo-Code:

for id in tutorIds
    query('SELECT intials, lastName FROM Student WHERE tutorId = '+id )

If you wanna have a list containing all Tutors who actually have students, do a

SELECT tutorId FROM Student GROUP BY tutorId


来源:https://stackoverflow.com/questions/4267412/selecting-rows-from-a-table-that-have-the-same-value-for-one-field

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!