使用DISTINCT在sql查询中不起作用

时间:2014-05-12 17:35:55

标签: sql distinct

我有以下关系。Database Relationship

这是我的疑问:

 sql = "SELECT DISTINCT g.ExeName, d.FileRec, d.RefDes, d.Title as [Component Title],
       c.Title AS [Sheet Title], f.FileName, f.Title AS [Sim Schematic Title] FROM
       (((((((Projects AS a INNER JOIN ProjectFile AS b ON a.RecNo=b.ProjectRec) 
       INNER JOIN Files AS c ON b.FileRec=c.RecNo) 
       INNER JOIN Components AS d ON c.RecNo=d.FileRec) 
       INNER JOIN CompP2Sim AS e ON d.RecNo=e.CompRec) 
       INNER JOIN p2Sim AS f ON e.p2SimRec=f.RecNo) 
       INNER JOIN ExeTable g ON f.ExeRec=g.RecNo) 
       INNER JOIN EffecP2Sim AS h ON f.RecNo=h.p2SimRec)
       WHERE d.StandardRec = " + b.Tag + " and a.RecNo = " + cbModel.SelectedValue + "
       AND c.SystemRec = " + (int)systemMode + 
       " AND d.RecNo IN (SELECT DISTINCT CompRec from CompP2Sim) AND h.ModelRec = " + cbModel.SelectedValue + " order by d.refdes";

但是通过这个查询,我仍然可以获得重复。我怎么能让P2Sim的RecNo成为DISTINCT。

结果如下:

enter image description here

重复相同的结果,我想得到的结果是没有重复的p2sim RecNo。在此结果中,文件rec不同,但它们都具有相同的P2Sim的RecNo。我试图对查询进行分组,但我不能。每次尝试运行它时都会出错。 " RefDes专栏不能被罚款。"在我想把()分组到不同的地方我不明白我得到了那个错误。

1 个答案:

答案 0 :(得分:9)

select distinct适用于整个行,而不仅仅是字段。 e.g。

SELECT DISTINCT foo, bar, baz

应该更多地阅读

SELECT DISTINCT(foo,bar,baz)

而不是:

SELECT DISTINCT(foo), NON-DISTINCT(bar), NON-DISTINCT(baz)

如果您希望某个特定字段在查询中是唯一的,那么您应该在该字段上group