Student Table
SID Name
1 A
2 B
3 C
Marks Table
id mark subject
1 50 physics
2 40 biology
1 50 chemistry
3 30 mathematics
SELECT distinct(std.id),std.name,m.mark, row_number() over() as rownum FROM
student std JOIN marks m ON std.id=m.id AND m.mark=50
即使使用Disticnt,结果也是A的2倍。我的预期结果将只有一个A。如果我将row_number()over()删除为rownum,它的工作效果很好。为什么会这样呢?如何解决。我正在使用DB2!
最佳答案
标记表中有两行,id为1,标记=50。因此,对于学生表中的每一行,您将在输出中得到两行...
如果只想要一个,则必须进行分组
SELECT std.id, std.name, m.mark, row_number()
over() as rownum
FROM student std
JOIN marks m
ON m.id=std.id AND m.mark=50
Group By std.id, std.name, m.mark
关于sql - 如何避免在连接两个表时出现重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8099747/