我有一个学生表,其中包含 rollNumber、majorSubject、minorSubject、fullName 列。
现在给定一个 rollNumber,如何查找与具有给定 rollNumber 的学生具有相同majorSubject、minorSubject 的所有学生。
我想到了什么:
SELECT * FROM students WHERE
majorSubject IN (SELECT majorSubject FROM students WHERE rollNumber='<rollNumber>') AND
minorSubject IN (SELECT minorSubject FROM students WHERE rollNumber='<rollNumber>')
如您所见,我运行了相同的子查询两次。我确信应该有一个优化或更好的方法来做到这一点。
最佳答案
SELECT allSt.*
FROM students allSt
join students st
-- check the same majorSubject AND the same minorSubject --
on allSt.majorSubject = st.majorSubject and allSt.minorSubject = st.minorSubject
WHERE
st.rollNumber = '<rollNumber>' AND
-- exclude student with the given rollNumber from the result set --
allSt.rollNumber <> '<rollNumber>'
关于mysql - 如何从MySQL表中获取多列具有相同值的所有行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28893459/