查询可能包含空记录的SQL值

时间:2020-07-27 14:11:41

标签: mysql sql

我有4个要在其上运行单个查询的表。我希望每个表中的特定值都与一个用户相关。

但是,其中一些表可能没有任何关联的记录。如果给定表中没有记录,则查询集将返回为空(因为该表中没有与指定用户有关的记录)。

问题

我们如何为用户提取所有值,并在没有值的列中插入空格/空值?

我的查询:

SELECT PLAYER.UUID,
       XP,
       RANKS.RANKNAME,
       HORSE.HEALTH_LEVEL,
       HORSE.SPEED_LEVEL,
       HORSE.JUMP_LEVEL,
       special_weapons.name
FROM PLAYER,
     HORSE,
     RANKS,
     Special_weapons
WHERE PLAYER.UUID = HORSE.UUID
  AND PLAYER.RANKID = RANKS.RANKID
  AND PLAYER.UUID = 'sldjnofw-adfdafd-113rsada'
  AND Player.uuid = special_weapons.uuid;

我的表格结构:

reddit response

我的表格内容:

enter image description here

在这种情况下,特殊武器表为空。在上述查询中,空白填充缺少的列。而是返回一个空集。

1 个答案:

答案 0 :(得分:1)

在这种情况下,您需要左加入。请尝试以下

SELECT player.uuid
      ,xp
      ,ranks.rankname
      ,horse.health_level
      ,horse.speed_level
      ,horse.jump_level
      ,special_weapons.name
FROM   player
LEFT   JOIN horse
ON     player.uuid = horse.uuid
LEFT   JOIN ranks
ON     player.rankid = ranks.rankid
LEFT   JOIN special_weapons
ON     player.uuid = special_weapons.uuid
WHERE  player.uuid = 'sldjnofw-adfdafd-113rsada';
相关问题