【问题标题】:joining two tables eventhough the id does not display on the second table加入两个表,即使 id 不显示在第二个表上
【发布时间】:2023-02-09 11:23:03
【问题描述】:

我有两个表 NAMES 和 NAMES_VERIFICATIONS

名称

id     fname    Tax  
1      jack     56982
1000   Tim      32165
2321   Andrew   98956
231    Jim      11215

NAMES_VERIFICATIONS 个

id     idtype  iddata
1      tax      56982
1      passport 12365
2321   tax      98956
2321   passport 65656

因此,如果您注意到 NAMES_VERIFICATIONS 表中没有 ID 1000 所以我希望我的结果是这样的

预期产出

NAMES.id   NAMES.fname  NAMES.TAX   NAMES_VERIFICATIONS.iddata
1          jack            56982     56982     
1000       Tim            32165      NULL
..
...

我试过的是像这样使用左连接

Select Names.id,Names.fname,NAMES.TAX,NAMES_VERIFICATIONS.iddata
FROM Names
LEFT JOIN NAMES_VERIFICATIONS 
ON Names.id = NAMES_VERIFICATIONS.id
WHERE NAMES.VERIFICATION.idtype = 'tax'
Order by Names.id

但我得到的结果是

输出

NAMES.id   NAMES.fname  NAMES.TAX   NAMES_VERIFICATIONS.iddata
1          jack            56982     56982     
2321       Andrew          98956     98956
..
...

但我希望它也显示 NAMES_VERIFICATIONS 中不存在的 IDS

我该怎么做呢?

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    将 WHERE 子句中的条件移动到连接的 ON 子句中:

    SELECT n.id, n.fname, nTAX, nv.iddata
    FROM Names n
    LEFT JOIN NAMES_VERIFICATIONS nv
        ON n.id = nv.id AND nv.idtype = 'tax'
    ORDER BY n.id;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-30
      • 1970-01-01
      • 1970-01-01
      • 2014-11-17
      • 1970-01-01
      • 1970-01-01
      • 2019-09-12
      • 1970-01-01
      相关资源
      最近更新 更多