복붙노트

[SQL] 어떻게 내가 같은 테이블에서 2 개 행을 비교합니까 (SQL 서버)

SQL

어떻게 내가 같은 테이블에서 2 개 행을 비교합니까 (SQL 서버)

나는 다양한 상태와 특정 ID에 일치하는 행을 찾고 테이블을 처리하는 백그라운드 작업을 작성해야합니다. 그것은 일치하는 ID로 행에 대해 데이터를 비교하는 문자열의 행 데이터를 저장합니다.

나는 행 데이터를 얻을 수있는 구문을 알고 있지만 내가 전에 같은 테이블에서 2 개 행을 비교 해본 적이 있나요? 그것은 어떻게하는 것인가? 나는 각각의 데이터를 저장하는 변수를 사용할 필요가시겠습니까? 아니면 다른 방법으로?

(2008 SQL Server를 사용)

해결법

  1. ==============================

    1.당신이, 자기가 가입라고 요구대로 여러 번 그 자체에 테이블을 가입 할 수 있습니다.

    당신이, 자기가 가입라고 요구대로 여러 번 그 자체에 테이블을 가입 할 수 있습니다.

    별명은 서로를 구별하기 위해 (아래의 예에서와 같이) 테이블의 각 인스턴스에 할당된다.

    SELECT a.SelfJoinTableID
    FROM   dbo.SelfJoinTable a
           INNER JOIN dbo.SelfJoinTable b
             ON a.SelfJoinTableID = b.SelfJoinTableID
           INNER JOIN dbo.SelfJoinTable c
             ON a.SelfJoinTableID = c.SelfJoinTableID
    WHERE  a.Status = 'Status to filter a'
           AND b.Status = 'Status to filter b'
           AND c.Status = 'Status to filter c' 
    
  2. ==============================

    2.OK 2 년 후 마침내 구문을 수정하는 시간이다 :

    OK 2 년 후 마침내 구문을 수정하는 시간이다 :

    SELECT  t1.value, t2.value
    FROM    MyTable t1
    JOIN    MyTable t2
    ON      t1.id = t2.id
    WHERE   t1.id = @id
            AND t1.status = @status1
            AND t2.status = @status2
    
  3. ==============================

    3.어떤 사람들은에 무슨 일이 일어나고 있는지보고 쉽게 다음 대체 구문을 찾을 수 있습니다 :

    어떤 사람들은에 무슨 일이 일어나고 있는지보고 쉽게 다음 대체 구문을 찾을 수 있습니다 :

    select t1.value,t2.value
    from MyTable t1
        inner join MyTable t2 on
            t1.id = t2.id
    where t1.id = @id
    
  4. ==============================

    4.SELECT COUNT (*) 발 (표 * FROM WHERE ID = 1 UNION SELECT * FROM 테이블 WHERE ID = 2)

    SELECT COUNT (*) 발 (표 * FROM WHERE ID = 1 UNION SELECT * FROM 테이블 WHERE ID = 2)

    같은 - 당신은 서로 다른 두 개의 행, 하나의 경우를 가지고있는 경우.

  5. ==============================

    5.

    SELECT * FROM A AS b INNER JOIN A AS c ON b.a = c.a
    WHERE b.a = 'some column value'
    
  6. from https://stackoverflow.com/questions/510916/how-do-i-compare-2-rows-from-the-same-table-sql-server by cc-by-sa and MIT license