mysql - 从一个表中减去另一表的行

标签 mysql null left-join

我在 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 中不支持。

有人可以帮我吗?谢谢提前。

最佳答案

表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同样的。

关于mysql - 从一个表中减去另一表的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21294669/

相关文章:

mysql - 如何优化表以选择 SUM?

php - Yii2 ActiveQuery 一列不等于另一列

postgresql - 使用 LEFT JOIN 和子查询提高 PostgreSQL 查询的性能

php - 检查MySQL行是否存在

python - 如何从 Python REST API 返回 JSON

c# - 如何从 f# 返回一个空元组到 c#?

mySQL如何将NULL显示为0

c# - 什么是NullReferenceException,如何解决?

mysql - 查询 : Count how many times a parameter in one table does not exist in another

mysql - 表的左连接部分