我有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;
我的表格结构:
我的表格内容:
在这种情况下,特殊武器表为空。在上述查询中,空白应填充缺少的列。而是返回一个空集。
答案 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';