SQL-使用Join/Having/Subquery进行查询-如何
请建议使用sql查询来获取 如果学生在多个科目中有相同的分数,则列出学生和学生成绩相同的相应科目 例如 审判-SQL-使用Join/Having/Subquery进行查询-如何,sql,join,vbscript,Sql,Join,Vbscript,请建议使用sql查询来获取 如果学生在多个科目中有相同的分数,则列出学生和学生成绩相同的相应科目 例如 审判- select person , subject where person in ( select person , score , count(score) group by person , score having count(score) > 1 ) 但在这本书中,彼得科学出现了,这不是必需的 请帮忙 谢谢您应该告诉我们您使用的是什么RDBMS。但这应该适用于所有地方:
select person , subject where person in
( select person , score , count(score) group by person , score having count(score) > 1 )
但在这本书中,彼得科学出现了,这不是必需的
请帮忙
谢谢您应该告诉我们您使用的是什么RDBMS。但这应该适用于所有地方:
select
t.*
from <tableName> t
join (
select
student, score
from <tableName>
group by
student, score
having count(*)>1
) x
on t.student=x.student
and t.score=x.score
顺便说一句,您的查询中缺少。请尝试:
select person , subject
from table t
join
( select person , score , count(score)
from table
group by person , score having count(score) > 1
) foo
on t.person = foo.person
where t.person = foo.person
and t.score = foo.score
除了不包括表之外,查询不起作用的原因:
您的内部查询是选择符合您的条件的学生和分数。但是你的外部查询是为所有符合条件的学生选择所有内容,这就是为什么彼得科学被包括在内。因此,您需要将外部查询中的结果限制为仅与所有条件匹配的结果。尝试以下方法:
select student, subject
from Person
where student + cast(score as varchar(20)) in
(
select student + cast(score as varchar(20)) from Person group by student,score having count(score) > 1
)
您可以通过自连接表实现此目标,如示例所示:
SELECT
t.Student,
t.Subject,
t.Score
FROM Table1 AS t
JOIN
(
SELECT Student, Score FROM Table1 GROUP BY Student, Score HAVING COUNT(*) > 1
) AS t1 ON t.Student = t1.Student AND t.Score = t1.Score
包含测试数据和创建表的完整示例,您可以在此处找到:
你的外部查询没有FROM子句。你可以使用排名函数吗?@Meherzad-我刚刚知道我在尝试什么,这不是确切的查询。您可以查看问题陈述并提出解决方案。@ta.speot.is确实如此,您能在这方面提供帮助吗。我正在使用vbscript从acceess数据库中获取行,然后继续进行进一步的计算。只要我能得到想要的结果,任何方法都是正当的。。谢谢很快回复。只是再多一点帮助。使用vbscript连接到Access-语法中的任何修改。首先在access中试用。我不是access专家,但我认为不需要对查询的语法进行任何修改。这是标准的SQL。
SELECT
t.Student,
t.Subject,
t.Score
FROM Table1 AS t
JOIN
(
SELECT Student, Score FROM Table1 GROUP BY Student, Score HAVING COUNT(*) > 1
) AS t1 ON t.Student = t1.Student AND t.Score = t1.Score