2014-01-22 126 views
2

我在MySql中有兩個包含類似這樣的記錄的表。從另一個表中減去一個表的行

table-A     table-B 
---------------------  --------------------- 
|prod_id | cat_id |  |prod_id | cat_id | 
---------------------  --------------------- 
|1  |1  |  |1  |1  | 
|2  |1  |  |2  |1  | 
|3  |1  |  |3  |1  | 
          |4  |1  | 
          |5  |1  | 

現在我想比較這兩個表,我的預期結果是。

--------------------- 
|prod_id | cat_id | 
--------------------- 
|4  |1  | 
|5  |1  | 

我已經在sql中檢查過'EXPECT','MINUS'但它們不支持MySql。

任何人都可以幫助我嗎?感謝提前。

+0

這個問題似乎是題外話題,因爲OP沒有努力嘗試自己解決這個問題。 – Kermit

+0

這是不正確的我已經嘗試過連接和其他的SQL函數,但他們給了我不共同的價值觀和其他SQL不支持在MySQL中的syntex,所以最後我把這個問題放在數據庫管理員。 –

回答

3

數據在表A

SELECT * FROM TableA; 
+---------+--------+ 
| prod_id | cat_id | 
+---------+--------+ 
|  1 |  1 | 
|  2 |  1 | 
|  3 |  1 | 
+---------+--------+ 
3 rows in set (0.00 sec) 

數據表B中

SELECT * FROM TableB; 
+---------+--------+ 
| prod_id | cat_id | 
+---------+--------+ 
|  1 |  1 | 
|  2 |  1 | 
|  3 |  1 | 
|  4 |  1 | 
|  5 |  1 | 
+---------+--------+ 
5 rows in set (0.00 sec) 

爲相同結式查詢

SELECT b.* 
FROM TableB b 
LEFT JOIN TableA a 
ON a.prod_id = b.prod_id AND a.cat_id = b.cat_id 
WHERE a.prod_id IS NULL; 
+---------+--------+ 
| prod_id | cat_id | 
+---------+--------+ 
|  4 |  1 | 
|  5 |  1 | 
+---------+--------+ 
2 rows in set (0.00 sec) 

sqlfiddle

+1

您不必同時測試兩個列的NULL,只要有一個就足夠了:'WHERE a.prod_id IS NULL;' –

+0

當然@ypercube,我會照顧的。 –

相關問題