sql对面的加入

was*_*256 1 sql join

我有两个表通过MAP表组合

Table ANIMAL:
+------+--------------+
| id   |  description |
+------+--------------+
|  2   |  Ape         |
|  3   |  Lion        |
+------+--------------+


Table MAP:
+-----------+---------+
| animal_id | legs_id |
+-----------+---------+
|   2       | 11      |
+-----------+---------+


Table LEGS:
+------+--------------+
|  id  |     legs     |
+------+--------------+
| 10   |      4       |
| 11   |      2       |
+------+--------------+
Run Code Online (Sandbox Code Playgroud)

我需要在LEGS表中没有映射条目的动物,如下所示:

 !(select *  
  from ANIMAL as a  
  JOIN MAP as m ON (a.id = m.animal_id)  
  JOIN LEGS as l ON (m.legs_id = l.id) )
Run Code Online (Sandbox Code Playgroud)

应该给我'狮子'作为结果

Joh*_*Woo 6

使用 LEFT JOIN

SELECT  a.*
FROM    animal a
        LEFT JOIN Map b
            On a.id = b.animal_id
WHERE   b.animal_id IS NULL
Run Code Online (Sandbox Code Playgroud)

要进一步了解联接,请访问以下链接: