【问题标题】:Query SQL values with possible empty records使用可能的空记录查询 SQL 值
【发布时间】:2020-07-27 14:11:41
【问题描述】:

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

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

问题

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

我的查询:

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;

我的表结构:

我的表格内容:

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

【问题讨论】:

  • 提示:JOINJOINJOIN !!!
  • 就这些了吗?我正在通过 = 运算符加入基于 UUID 的字段。 'join' 关键字是否会自动填充空白/空值?

标签: mysql sql


【解决方案1】:

在这种情况下,您需要 LEFT JOIN。试试下面

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';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-27
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    相关资源
    最近更新 更多