2012-07-16 119 views
0
SELECT  P.CODE, 
      P.STATUS, 
      G.DESCRIPTION, 
      x.xref_code, 
      X.XREF_STATUS 

FROM  table1.price_data p, 
      TABLE2.GENERAL_DATA G, 
      TABLE3.XREF_DATA X 

WHERE   
     P.CODE = G.CODE 
     AND G.CODE=X.CODE 
     AND x.code=4545645 
     AND X.VEHICLE_CODE=9999999 

确实有30,000行要过滤...我如何更改上述查询以仅显示x.xref_status的唯一值?如何删除特定列中具有重复值的行SQL

回答

1

目前尚不清楚为什么您的X.XREF_STATUS重复:TABLE3表中有嘟嘟声吗?或者更可能的是,在相关记录中有许多对XREF_STATUS值的引用?

如果其他列的行与X.XREF_STATUS不同,您将无法选择一行而不是另一行,以仅显示唯一的X.XREF_STATUS值。

独特X.XREF_STATUS值的列表可以得到:

select distinct X.XREF_STATUS 
from TABLE3.XREF_DATA X 
where x.code=4545645 
AND X.VEHICLE_CODE=9999999 

这可以被连接到其它表,以获得相关数据,但同样,如果你使用含有一个以上的参照表连接X.XREF_STATUS这将相应地重复。 您必须对其他列(COUNT,SUM等)进行聚合以避免失败。

+0

是的,在table3表中有两个dups,查询中也在相关表中也引用了xref_status的值 – bouncingHippo 2012-07-16 15:19:08

+1

独特的查询解决了table3中的dups。 多个引用是由于它们是一个更具体的应用程序问题而被删除的。您也可以在此处使用截然不同的字段,并尝试从select中删除导致整个记录为唯一的列。 – 2012-07-16 15:23:25

+0

你是对的,多个参考文献是一个痛苦...谢谢安德烈,它为我工作! – bouncingHippo 2012-07-16 15:27:50