2014-01-22 85 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,我会照顾的。 –

相关问题