mysql-如何获取父表中缺少的所有关系外键?

时间:2019-04-28 18:15:27

标签: mysql sql

我正在为不包含关系外键的旧项目工作。缺少某些类别。我想获取所有类别category_tbl中不存在category_id的产品

在下表中,category_tbl中不存在category_id 3

   category_tbl
    id name
     1 fruit
     2 animal

  product_tbl
     id name   category_id
     1  apple   1
     2  cat     2
     3  coffee  3
     4  tea     3

2 个答案:

答案 0 :(得分:1)

您可以使用“不存在”来做到这一点:

select p.* 
from product_tbl p
where not exists (
  select 1 from category_tbl
  where id = p.category_id 
)

请参见demo
结果:

| id  | name  | category_id |
| --- | ----- | ----------- |
| 3   | coffe | 3           |
| 4   | tea   | 3           |

答案 1 :(得分:0)

对于category_id为null的地方,您可以使用左联接和检查

 select  c.name
 from product_tbl p 
 left  join category_tbl c  ON p.category_id = c.id 
 where category_id  is null