我有2张这样的表:
tableA
-------
skillId | characterId
tableB
-------
skillId | skillName
我需要选择tableB中的所有行和tableA中characterId = 123的所有行,如果characterId不在tableA中,则返回NULL
所以结果如下:
charID SkillName
-------------------
123 Jumping
123 Running
NULL RangedAttack
123 MeleeWeapon
NULL AutomaticWeapon
123 Handgun
NULL EarthMagic
NULL WaterMagic
我试过这个:
select a.characterId As charID, b.skillName AS SkillName
from tableA a
left join tableB b ON a.skillId = b.skillId
where characterId = 123
和这一个:
select a.characterId As charID, b.skillName AS SkillName
from tableA a
full outer join tableB b ON a.skillId = b.skillId
where characterId = 123
但两个查询都没有给我任何结果,即使我知道它应该给我一些东西。
是否有正确的方法来获得我需要的结果?
谢谢!
答案 0 :(得分:3)
您的left join
顺序错误:
select a.characterId As charID, b.skillName
from tableB b left join
tableA a
on a.skillid = b.skillId and a.characterId = 123;
如果你想要TableB
中的所有技能,那么这应该是left join
中的第一个表。