【问题标题】:Stuck with SQL query need guidance卡住 SQL 查询需要指导
【发布时间】:2020-10-02 09:29:36
【问题描述】:

我是学习 SQL 的初学者,谁能帮我做一个 SQL 查询:

两个故事:

用户两列:

  • id 唯一的用户 ID
  • 汽车拥有用户

汽车

  • car 是唯一的汽车名称
  • 维修汽车的车库

我需要一个 select 语句,它返回两列 id 和garage 考虑到用户 id 和他们的汽车去服务的车库名称。如果汽车表中缺少用户的汽车,则车库列应包含“Missing”。返回按用户 ID 排序的表格

用户表

id  car
1   Lamborghini Diablo
2   Ford Raptor
3   Ferrari Testarossa
4   Porsche 911 Carrera
5   Jensen Interceptor

汽车表

Car                      Garage
Lamborghini Diablo      Auto Tek
Porsche 911 Carrera     Auto Tek
Ferrari Testarossa      Automotive Depot
Ford Raptor             Dentworks

输出:

1   Auto Tek
2   Dentworks
3   Automotive Depot
4   Auto Tek
5   Missing

【问题讨论】:

标签: sql join left-join


【解决方案1】:

我会在这里使用左反连接:

SELECT
    u.id,
    COALESCE(c.Garage, 'Missing') AS Garage
FROM Users u
LEFT JOIN Cars c
    ON c.Car = u.car;

Demo

【讨论】:

  • 感谢您的查询,我不知道 COALESCE SQL 功能感谢您的帮助,现在它增加了我的知识
【解决方案2】:

检查一下

select users.id, coalesce(cars.garage, 'Missing')
from Users
left join Car
  on users.car = cars.Car

【讨论】:

  • 你需要一个左连接。
【解决方案3】:

或者你可以试试:

选择 u.id, ISNULL(c.Garage, 'Missing') 作为车库 FROM 用户 左加入汽车 c 开 c.Car = u.car;

您可以在本文中看到 COALESCE 和 ISNULL 之间的区别: https://www.itprotoday.com/sql-server/coalesce-vs-isnull

【讨论】:

    猜你喜欢
    • 2013-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-03
    • 2019-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多