2017-02-09 80 views
1

問題在於「不受MySQL支持」的「EXCEPT」。目標是找到所有列(id除外)不相同的所有行。如何將使用「EXCEPT」的MSSQL查詢轉換爲MySQL?

SELECT B.*, 'modified' AS 'changetype' 
FROM (
     SELECT * FROM table1 
     EXCEPT 
     SELECT * FROM table2 
) S1 
INNER JOIN table2 B ON S1.id = B.id; 

回答

1

這很棘手。你將不得不列出MySQL中的所有列。這可能是最接近你想要的:

select t2.* 
from table2 t2 
where not exists (select 1 
        from table1 t1 
        where t1.id = t2.id and 
         t1.col1 = t2.col1 and 
         t1.col2 = t2.col2 and 
         . . . 
       ); 
+0

我是否正確,這也捕捉記錄存在於一張表,但沒有其他? –

+0

@Fo。 。 。 。就像你問題中的查詢一樣,這隻會從'table2'返回id。 –