Sql 从多个表中选择不同的值,其中一个表有多个表

Sql 从多个表中选择不同的值,其中一个表有多个表,sql,sql-server-2008,Sql,Sql Server 2008,我搜索过这个问题,但没有找到任何与之类似的问题。我有两张表,都有一个字段FormID。在表A中,FormID是唯一的。在表B中,可能有多条记录具有相同的FormID-表B是一个问题跟踪表,因此,如果表单中存在多个数据输入问题,则其中将有多条记录 以下查询工作正常: select distinct b.FormID from b where b.FormID = a.FormID and a.status='done' 它会生成唯一formid的结果列表。但是,我还需要在这个查询中获取一些其他列

我搜索过这个问题,但没有找到任何与之类似的问题。我有两张表,都有一个字段FormID。在表A中,FormID是唯一的。在表B中,可能有多条记录具有相同的FormID-表B是一个问题跟踪表,因此,如果表单中存在多个数据输入问题,则其中将有多条记录

以下查询工作正常:

select distinct b.FormID
from b
where b.FormID = a.FormID
and a.status='done'
它会生成唯一formid的结果列表。但是,我还需要在这个查询中获取一些其他列,只有当我将这些列添加到select或join时,我才能获取所有重复的formid

我试过:

select distinct (b.FormID), a.FormType, a.Site, a.uid, b.ProbID, b.Date
from b, a
where b.FormID = a.FormID
and a.status='done'
以及一些使用联接的变体,但它们最终都会得到所有具有重复formid的行

建议?

试试看

SELECT  b.FormID, 
        MAX(a.FormType) FormType, 
        MAX(a.Site) Site, 
        MAX(a.uid) uid, 
        MAX(b.ProbID) ProbID, 
        MAX(b.Date) Date
  FROM b INNER JOIN 
       a ON b.FormID = a.FormID
 WHERE a.status='done'
 GROUP BY b.FormID

所以,假设b.ProbID和b.Date的值不同,您希望显示其中哪一个值。。。由于a和b之间存在一对多关系。哪个数据库管理系统?PostgreSQL有一个很好的版本,但是其他版本需要做一些工作。哦,对不起,这是MS SQL 2008。而且,我真的不在乎我在B中得到哪个记录,主要的是我需要一个有数据输入问题的所有formid的列表。然后,我将显示这些表单,以便有人手动修复,但我不希望列表中有多个相同的表单。除了FormID之外,我真的不需要查询B中的值。我只是试了一下,效果不错。谢谢,很抱歉打扰你!