【问题标题】:sql join two tablesql连接两个表
【发布时间】:2012-02-28 15:03:39
【问题描述】:
TABLE A >>
uid name
1   test1
2   test2
3   test3
4   test4

TABLE B >>
uid address
1   address1
2   address2
4   address3

RESULT
1   test1   address1
2   test2   address2
3   test3
4   test4   address3

谁能告诉我如何编写查询并获取上述结果,非常感谢! 我试过加入,左右加入。一切都没有结果。

【问题讨论】:

  • 您在加入时尝试了什么?即给予尝试?

标签: mysql sql tsql left-join


【解决方案1】:

您可以在这两个表之间编写左外连接最好的理解方法是查看下图

查询您的要求

SELECT A.uid, A.name, B.address FROM A LEFT JOIN B ON A.uid=B.uid 

阅读这篇关于代码项目的原创文章会对您有很大帮助:Visual Representation of SQL Joins

Difference between JOIN and OUTER JOIN in MySQL 找到原始的。

【讨论】:

  • 这些是集合操作的图表,而不是连接,例如左下角是A UNION B,中间是A INTERSECT B,以此类推
  • 我喜欢你的图表,解释得很好。非常感谢mcuh
【解决方案2】:
SELECT A.uid, A.name, B.address FROM A LEFT OUTER JOIN B ON A.uid = B.uid

【讨论】:

    【解决方案3】:

    您说您尝试了左连接但没有进行任何尝试 --- 第一个合乎逻辑的尝试是:

    SELECT A.uid, A.name, B.address
    FROM A
    LEFT JOIN B ON A.uid=B.uid
    

    嘿,快!它给你你所追求的。

    【讨论】:

      【解决方案4】:

      你可以使用任何连接。我写这个查询是为了完全连接。

      select A.uid,A.name,B.address from A FULL JOIN B ON A.uid = B.uid
      

      【讨论】:

        【解决方案5】:

        如果 B 没有值,我猜你在追求一个空值,即在 A 中具有相同的 uid。

        如果是这种情况,IFNULL 将返回你指定的默认值,以防参数为空(在 MSSQL 中使用 ISNULL):

        SELECT A.value, IFNULL(B.value, '')
        FROM A LEFT JOIN B
        ON A.uid = B.uid
        

        这将产生类似:

        test1   address1
        test2   address2
        test3   
        test4   address3
        

        【讨论】:

          猜你喜欢
          • 2012-05-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多