如何删除特定列中具有重复值的行SQL
问题描述:
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
答
目前尚不清楚为什么您的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等)进行聚合以避免失败。
是的,在table3表中有两个dups,查询中也在相关表中也引用了xref_status的值 – bouncingHippo 2012-07-16 15:19:08
独特的查询解决了table3中的dups。 多个引用是由于它们是一个更具体的应用程序问题而被删除的。您也可以在此处使用截然不同的字段,并尝试从select中删除导致整个记录为唯一的列。 – 2012-07-16 15:23:25
你是对的,多个参考文献是一个痛苦...谢谢安德烈,它为我工作! – bouncingHippo 2012-07-16 15:27:50