📅  最后修改于: 2023-12-03 14:40:10.500000             🧑  作者: Mango
有时候我们需要查询表中不存在的记录,但是MySQL不提供查询不存在记录的直接方法。不过,我们可以通过连结另一个表,将原始表中的所有记录与某个值相匹配的记录作比较,从而得出该表中不存在的记录。
以下是一个示例,演示如何查找一个名为customer的表中不属于另一个名为orders的表的客户记录:
可以在customer
表中添加一个名为order_id
的列,使其与 orders
表的order_id
列相同。我们可以通过下列代码实现:
ALTER TABLE customer ADD order_id INT DEFAULT 0;
这将在customer
表中添加一个名为order_id
的整数类型列,并将其默认值设置为0。
然后,我们可以使用LEFT JOIN 连结语句查询customer
表中不存在于orders
表中的记录,使用以下语句实现:
SELECT customer.id, customer.name
FROM customer
LEFT JOIN orders
ON customer.order_id = orders.order_id
WHERE orders.order_id IS NULL;
这意味着customer
表中所有order_id
与orders
表中的order_id
不匹配的记录都将被返回。
我们在上面添加了一列order_id
,其目的是将customer
表中的记录与orders
表的记录进行比较。查找不属于另一个表的记录时,我们可以将表与表相连结,找出不匹配的数据行。
这便是如何查找MySQL中一个表中不存在记录的方法。这对于许多不同的用例非常有用,包括找出没有购买某个特定产品的所有客户,以及找出从未付款的订单。