2013-10-08 2 views
1

나는 두 개의 테이블, 테이블 1과 테이블이에 일반 필드를 제거하는 방법 2.두 테이블

테이블 1의 필드입니다 : 표 2의 book,pen,pencil,bag

필드는 다음과 같습니다 car,van,book,bike,pencil

쿼리를 실행하면 쿼리가 중복 또는 일반 필드를 무시하고 다른 필드를 반환하도록합니다. >는 differents의 값을 반환 -

delete form X 
where (car = 
    Select distinct car 
    from X 
    where x); 

구분 :

car,van,bike,pen,bag 
+0

당신이 어떤이 두 테이블 간의 조인 여부? –

+0

예. 조인을 허용하는 두 테이블에 공통적 인 정보는 무엇입니까? 거기있어? (예 : customer_id, product_id ...) –

+0

하나의 열 값입니까? 또는 열 이름? 즉, * fields *는 무엇을 의미합니까? 현재, 나는 이것을 명확하지 않은 것으로 보류하고있다. –

답변

0

출력은 다음과해야합니다, 당신은이 같은 STH을 시도했습니다. 아마도

+0

그는 중복을 삭제하지 않으려 고 중복을 반환하지 않는 쿼리를 실행하려고합니다. 또한 그는 unqiue 값을 얻고 싶지 않고 중복 값이없는 값만 가져오고 싶습니다. –

+0

오케이! 죄송합니다 잘못된 방법으로 이해합니다. – ZaoTaoBao

0
WITH uniontables AS (
    SELECT NULL AS car, 
      NULL AS van, 
      book, 
      NULL AS bike, 
      pen, 
      pencil, 
      bag 
    FROM  [Table 1 ] 
    UNION 
    SELECT car, 
      van, 
      book, 
      bike, 
      NULL AS pen, 
      pencil, 
      NULL AS bag 
    FROM [Table 2 ]) 

    SELECT DISTINCT * FROM uniontables 
+0

이것은 당신에게 필드와 모든 중복 행을 꺼내 줄 것입니다 .. 서식에 대해 미안 해요 아직도 게시하는 데 익숙해 져있어 –

+0

각 테이블에서 가져온 복제본을 원할 경우 각 선택문에서 DISTINCT를 사용해야합니다. FROM [표 1] UNION SELECT DISTINCT 자동차, 밴, 책, 자전거, NULL AS 펜, 연필, NULL AS 가방 FROM [표 2]) SELECT DISTINCT * FROM uniontables –

2

는 :

SELECT x.thing FROM 
(
    SELECT thing FROM dbo.Table1 
    UNION ALL 
    SELECT thing FROM dbo.Table2 
) X 
GROUP BY x.thing 
Having Count(*) = 1 

Demo

그러나,이 또한 또는 원하는되지 않을 수도 있습니다 자신의 테이블에서 중복 된 항목을 제거합니다.

0

노력이 하나

declare @table1 table (col1 varchar(max)) 
declare @table2 table (col1 varchar(max)) 

insert into @table1 values 
('book'),('pen'),('pencil'),('bag') 

insert into @table2 values ('car'),('van'),('book'),('bike'),('pencil') 

;with cte 
as (
select COUNT(1) as total_item, col1 from (
select col1 from @table1 
union all 
select col1 from @table2 
)a group by col1 
) 

select col1 from cte where total_item = 1