-4

Table1 (ID,Name,Description) と Table2 (ID,Name,Description) という 2 つのテーブルがあります。

Table1 から Table2 に存在しないレコードを見つける必要があります。レコードが存在する場合は、名前と説明を比較し、列の不一致を表示します。ID は、比較に使用されるフィールドです。

例えば

Table 1
( 1, Jon,Student) 

Table 2 
(1,Jon, Teacher) 

そのため、クエリは説明の不一致を返す必要があります

4

2 に答える 2

0

このようなものをお探しですか?

SELECT
t1.id,
CASE
WHEN t2.id IS NULL THEN 'does not exist in table2'
WHEN t1.Name != t2.Name AND t1.Description = t2.Description THEN 'Name is different'
WHEN t1.Name = t2.Name AND t1.Description != t2.Description THEN 'Description is different'
ELSE 'Both Name and Description differ'
END AS what_is_the_difference
FROM
table1 t1
LEFT JOIN table2 t2 ON t1.id = t2.id
于 2012-08-27T18:13:11.413 に答える
0

あなたはSELECTでそれを解決することができます

SELECT  TABLE1.ID,  CASE WHEN TABLE1.NAME <> TABLE2.NAME THEN 'NAME different' 
                         ELSE 'NAME equal'
                    END
                  , TABLE1.NAME, TABLE2.NAME
                  , CASE WHEN TABLE1.DESCRIPTION <> TABLE2.DESCRIPTION THEN 'DESCRIPTION different' 
                         ELSE 'DESCRIPTION equal'
                    END
                  , TABLE1.DESCRIPTION, TABLE2.DESCRIPTION
  FROM  TABLE1, TABLE2
 WHERE   TABLE1.ID = TABLE2.ID  

異なるジョイント行のみが必要な場合は、 was 句に追加します

AND (TABLE1.NAME <> TABLE2.NAME OR TABLE1.DESCRIPTION <> TABLE2.DESCRIPTION)

ID が他のテーブルにない可能性がある場合は、左結合を使用する必要があります

SELECT      TABLE1.ID,  
            CASE WHEN TABLE2.ID IS NULL THEN 'No corresponding row in TABLE2' END
            CASE WHEN TABLE1.NAME <> TABLE2.NAME THEN 'NAME different' ELSE 'NAME equal' END,           
            TABLE1.NAME, TABLE2.NAME
            CASE WHEN TABLE1.DESCRIPTION <> TABLE2.DESCRIPTION THEN 'DESCRIPTION different' ELSE 'DESCRIPTION equal' END,
            TABLE1.DESCRIPTION, TABLE2.DESCRIPTION
       FROM TABLE1
  LEFT JOIN TABLE2 ON TABLE1.ID = TABLE2.ID  
于 2012-08-27T18:06:51.127 に答える