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.. 因此,您将在学生表中的每一行的输出中得到两行...
如果你只想要一个,你必须做一个group By
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)