SQL select 其中一个参数等于另一个 table

SQL select where one parameter equals to another one in another table

我是 SQL table 加入的新手,我需要一些帮助。

我有两个 table,没有。一个看起来像这样(我们称之为 TableA):

    Fogado_felh_id   Kuldo_felh_id
    -------------------------------
    35               33
    35               38
    35               NULL
    35               39

另一个看起来像这样(并称之为 TableB):

    id               Login_name
    ---------------------------------------
    33               somebody@emailhere.com
    38               SomeUserName

我想加入这些 table 以便我根据 'Kuldo_felh_id' 获取登录名并保留整个 TableA 内容。

所以我写了这个SQL查询命令:

SELECT 
    a.*, b.login_nev 
FROM
    TableA a, TableB b 
WHERE
    fogado_felh_id = 35 
    AND b.id = a.kuldo_felh_id;

它return是这样的:

    Fogado_felh_id   Kuldo_felh_id   Login_name
    -----------------------------------------------------------
    35               33              somebody@emailhere.com
    35               38              SomeUserName

问题是此命令不会return kuldo_felh_id 为空或表B 中不存在id 的行。我如何才能return tableA表中不存在的内容?

这是我希望看到的输出:

    Fogado_felh_id   Kuldo_felh_id   Login_name
    --------------------------------------------------------
    35               33              somebody@emailhere.com
    35               38              SomeUserName
    35               NULL            NULL //Because it does not exist the login_name should be null
    35               39              NULL //Because it does not exist the login_name should be null

这应该能满足您的需求。注意 LEFT JOIN 语法。包括 ON 关键字以指定连接 2 个表的内容。开始别名后,为所有查询列设置别名。

SELECT a.*, b.login_nev 
from TableA a
LEFT JOIN TableB b ON b.id = a.kuldo_felh_id
where a.fogado_felh_id = 35