在sql中找到一对具有相同标记的学生

时间:2017-03-20 17:38:43

标签: sql

因此 Sql student(name,roll,department,marks)中有此表。我必须找到一对具有相同标记的学生(假设成对存在)。
我所做的是:

select student.name,
    x.name,
    x.marks
from student,
    student x
where student.marks = x.marks
    and student.name != x.name

o / p是:

alice      Alex     40
sam        jack     30
jack       sam      30
Alex       alice    40

问题是如何删除重复的?

3 个答案:

答案 0 :(得分:2)

请尝试使用<(或>),以确保不包含反向匹配。

select t.name,
    x.name,
    x.marks
from student t
join student x on t.marks = x.marks
   and t.name < x.name

答案 1 :(得分:0)

不要在名称之间使用'!=',只需使用'&lt;'哪一个只能站立一次。

select student.name,
    x.name,
    x.marks
from student,
    student x
where student.marks = x.marks
    and student.name < x.name;

答案 2 :(得分:0)

'<'工作正常,您可以使用以下查询:

SELECT A.Name,
    B.Name,
    B.Marks
from Student A
LEFT JOIN Student B ON A.Marks=B.Marks AND B.Name < A.Name 
WHERE B.Marks IS NOT NULL

由于