IN SQL INNER JOIN 可以添加两个不同列的表吗?

Posted

技术标签:

【中文标题】IN SQL INNER JOIN 可以添加两个不同列的表吗?【英文标题】:IN SQL INNER JOIN can you add two tables with different columns? 【发布时间】:2021-01-13 08:47:02 【问题描述】:

您好,我目前是 SQL 新手。我试图从预订表中选择 checkindate 和 checkout 列,从客户表中选择名字和姓氏。这两个表共享一个公共列,即 customerID。谁能帮帮我!!

Booking table:
bookingID (pk)
checkindate
checkoutdate 
customerID (fk)

Customer table:
customerID (pk)
firstname 
lastname

【问题讨论】:

【参考方案1】:
SELECT booking.checkindate, booking.checoutdate, customer.firstname, customer.lastname
FROM booking 
JOIN customer 
ON booking.customerID = customer.customerID

【讨论】:

虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。【参考方案2】:

您可以按如下方式使用内连接:

SELECT B.customerid,
       B.checkindate,
       C.firstname ,
       C.lastname 
  FROM BookingTable b
  join CustomerTable c on b.customerid=c.customerid

【讨论】:

你必须写 B.Checkindate 而不是 C.Checkindate【参考方案3】:
SELECT bt.customerid,checkindate,firstname ,lastname  
FROM BookingTable bt inner join CustomerTable ct 
     on bt.customerid=ct.customerid

【讨论】:

永远不要使用这样的连接。使用标准 ANSI 连接。 欣赏它。请在您的答案中使用 b.checkindate 而不是 c.checkindate。 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。

以上是关于IN SQL INNER JOIN 可以添加两个不同列的表吗?的主要内容,如果未能解决你的问题,请参考以下文章

INNER JOIN和IN的结合:Oracle Sql

SQL语句 in和inner join各有什么优点

SQL Server-聚焦INNER JOIN AND IN性能分析(十四)

SQL Server-聚焦INNER JOIN AND IN性能分析(十四)

SQL优化--使用 EXISTS 代替 IN 和 inner join来选择正确的执行计划

Oracle SQL INNER Join 基于不匹配的值