zoukankan      html  css  js  c++  java
  • 数据库左连接 a left join b on

    左连接查询
    保留左边主表的所有行(即使在右表没有匹配的行),右表输出满足 on 条件的行,不满足的输出null
     

    示例:组合两个表 - 力扣

    表1: Person

    +--------------+-----------+
    | 列名          |      类型 |
    +--------------+-----------+
    | PersonId   |         int |
    | FirstName | varchar |
    | LastName | varchar |
    +-------------+------------+
    PersonId 是上表主键


    表2: Address

    +-------------+------------+
    | 列名          | 类型   |
    +-------------+------------+
    | AddressId | int         |
    | PersonId   | int         |
    | City           | varchar |
    | State         | varchar |
    +-------------+------------+
    AddressId 是上表主键
     

    编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:

     FirstName, LastName, City, State 

    # from A
    # left join B
    # on 
    
    select A.FirstName, A.LastName, B.City, B.State
    from Person as A
    left join Address as B
    on A.PersonId=B.PersonId
    (170ms) # 本题可优化思路:Address表可能重复保存某条地址信息,因此Address表先用distinct去重
    select A.FirstName, A.LastName, B.City, B.State from Person as A left join (select distinct PersonId, City, State from Address) as B on A.PersonId=B.PersonId
    (150ms)
    输入:
    {"headers": {"Person": ["PersonId", "LastName", "FirstName"], "Address": ["AddressId", "PersonId", "City", "State"]}, "rows": {"Person": [[1, "Wang", "Allen"]], "Address": [[1, 2, "New York City", "New York"]]}}
    
    输出:
    {"headers":["FirstName","LastName","City","State"],"values":[["Allen","Wang",null,null]]}
  • 相关阅读:
    [转]关于ORA00979 不是 GROUP BY 表达式错误的解释
    【转】mongodb简介及源码编译安装mongo2.0.0服务器
    mysql 缓存(转)
    iostat命令详解(转)
    C++虚函数,纯虚函数,抽象基类,虚基类(转)
    C++虚类的作用(转)
    C++ 纯虚类(转)
    虚函数的应用特性(转)
    2、Linux多线程,线程的分离与结合(转)
    mongodb js shell不能使用退格键的问题(转)
  • 原文地址:https://www.cnblogs.com/ldy-miss/p/11837376.html
Copyright © 2011-2022 走看看