gpt4 book ai didi

如果未进行连接,则 Mysql 选择列为 null

转载 作者:太空宇宙 更新时间:2023-11-03 10:55:32 25 4
gpt4 key购买 nike

我有 3 个表。

  • 第一个是引用联系人的用户表。
  • 第二个是联系人行表,其中包含电子邮件地址和联系人引用。
  • 第三个表包含信息,如何使用联系人行以及对联系人行的引用。

在这种情况下,我试图从用户表中获取记录并设置电子邮件地址(如果它存在并且设置了正确的使用类型)。如果联系人行为空或未设置任何使用类型,仍应返回结果,在这种情况下 emailaddress 应为 null。

表1

  • 编号
  • 联系人

表2

  • 编号
  • 值(value)
  • 类型
  • 联系人

表 3

  • 编号
  • 表2_id
  • 类型

只要所有这些表中的记录都有完整的链,它就可以工作,但是当表 2 没有任何记录或表 3 没有正确引用表 2 时,它什么都不返回。

  • 表 1 总是有行
  • 表 2 可以有一行或多行
  • 表 3 可以有 1 个对表 2 行的引用

我现在拥有的是:

SELECT 
Table1.*,
Table2.value AS emailaddress
FROM
Table1
LEFT JOIN Table2
ON Table2.f_contact = Table1.f_contact
LEFT JOIN Table3
ON Table3.table2_id = Table2.id
WHERE Table1.f_contact = 1113
AND Table2.f_type = 2
AND Table3.f_type = 3

最佳答案

将您的条件从 where 子句移动到 ON 子句

SELECT 
Table1.*,
Table2.value AS emailaddress
FROM
Table1
LEFT JOIN Table2
ON Table2.f_contact = Table1.f_contact AND Table1.f_contact = 1113
LEFT JOIN Table3
ON Table3.table2_id = Table2.id AND Table2.f_type = 2 AND Table3.f_type = 3

关于如果未进行连接,则 Mysql 选择列为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21072705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com