【问题标题】:SQL Query for joining non existent rows with a NULL field使用 NULL 字段连接不存在的行的 SQL 查询
【发布时间】:2016-03-27 04:49:48
【问题描述】:

我有两张桌子

A. LinkNames

LINKID NAME
1  Name1
2  Name2
3  Name3

B. Links

WebsiteID  LINKID  LINKPATH
1             1     "WWW.test.com"

我需要一个显示这样输出的查询

LINKID   LINKNAME   LINKPATH
1         NAME1     WWW.test.com
2         NAME2     ""
3         NAME3     ""

我已经尝试了所有可能的连接,但没有通过

【问题讨论】:

    标签: mysql sql select left-join ifnull


    【解决方案1】:

    使用 LEFT JOIN 连接两个表。

    试试这个:

    SELECT A.LINKID, 
           A.NAME AS LINKNAME, 
           IFNULL(B.LINKPATH, '""') AS LINKPATH
    FROM LinkNames A
    LEFT JOIN Links B ON A.LINKID = B.LINKID;
    

    如果您想输入WebSiteID = 1 条件,请使用以下查询:

    SELECT A.LINKID, 
           A.NAME AS LINKNAME, 
           IFNULL(B.LINKPATH, '""') AS LINKPATH
    FROM LinkNames A
    LEFT JOIN Links B ON A.LINKID = B.LINKID AND B.WebsiteID = 1;
    

    上面的查询也将允许 NULL 值。

    【讨论】:

    • 此查询运行良好,但只要我放置 where 子句 SELECT A.LINKID, A.NAME AS LINKNAME, IFNULL(B.LINKPATH, '""') AS LINKPATH FROM LinkNames A LEFT JOIN Links B ON A.LINKID = B.LINKID WHERE WebsiteID = 1 这不显示空行....抱歉在最初的问题中遗漏了这一点
    • 非常感谢:) 这行得通.. 自从 2 天以来我一直在努力。
    【解决方案2】:

    你必须像下面这样使用INNER JOIN

    SELECT LinkNames.LINKID,
           LinkNames.NAME,
           Links.LINKPATH
    FROM LinkNames
    JOIN Links ON LinkNames.LINKID = Links.LINKID ;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-25
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 1970-01-01
      • 2013-05-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多