我要加入一些表格进行查找。

(宠物)

| id | owner_id |  pet_name   | size |
--------------------------------------
| 1  |    1     |   Sparky    |  L   |
| 2  |    1     |    Spot     |  L   |
| 3  |    3     |   FooFoo    |  M   |
| 4  |    3     |    Barky    |  L   |
| 5  |    3     |    Jeb      |  S   |


(所有者)

| id |  owner_name  |
--------------------
| 1  |    Jeff      |
| 2  |   (Kathy)    |
| 3  |    Tom       |


当我像这样进行内部联接时:

SELECT

OWNER.id, OWNER.owner_name, PET.pet_name, PET.size

FROM OWNER

INNER JOIN PET ON PET.owner_id = OWNER.id


我得到这样的结果:

| id |  owner_name  |  pet_name   | size |
------------------------------------------
| 1  |     Jeff     |   Sparky    |  L   |
| 1  |     Jeff     |    Spot     |  L   |
| 3  |     Tom      |   FooFoo    |  M   |
| 3  |     Tom      |    Barky    |  L   |
| 3  |     Tom      |    Jeb      |  S   |


凯西不在结果中。我明白为什么。但我希望Kathy参与其中。
我希望所有所有者出现,而不管他们是否养宠物-以及那些确实合并在一起的宠物。

我如何获取所有OWNER表以显示与PET表联接的所有所有者-不管他们在PET表中是否有宠物?

感谢大家 :)

最佳答案

使用LEFT JOIN代替INNER

SELECT
  OWNER.id,
  OWNER.owner_name,
  PET.pet_name,
  PET.size
FROM OWNER
  LEFT JOIN PET
    ON PET.owner_id = OWNER.id

关于mysql - MySQL内部联接帮助-希望包括没有匹配项的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15031421/

10-09 01:48