有没有办法在连接表中识别缺失的组合。例如:三个标签
动物
食品
animals_food
可以识别任何特定食物与动物没有关联,反之亦然?
答案 0 :(得分:3)
您可以使用左连接:
SELECT animals.id FROM animals LEFT JOIN animals_food ON animals.id = animals_food.animals_id WHERE animals_food.food_id IS NULL;
即使连接条件没有找到右表中的任何匹配行(animals_food),left join也包含左表(动物)中的所有行。如果未找到匹配项,则右表的列将替换为NULL。
我的查询中的WHERE条件会删除所有匹配的行,只留下结果中左表的孤立行。