【问题标题】:SQL Comparing Data from Two TablesSQL 比较两个表中的数据
【发布时间】:2012-03-06 12:41:58
【问题描述】:

我有两张表 Route 和 Booking

CREATE TABLE Route (
RouteID numeric(4),
RouteIMG blob,
RDetails varchar2(40),
CONSTRAINT Route_pk PRIMARY KEY (RouteID));

CREATE TABLE Booking (
BookingID numeric(4),
BookingType varchar2(1),
StartTime date,
EndTime date,
Date date,
History varchar2(25),
RouteID numeric(4),
ExaminerID numeric(4),
InstructorID numeric(4),
StudentID numeric(4),
CONSTRAINT Booking_pk PRIMARY KEY (BookingID),
CONSTRAINT Route_fk FOREIGN KEY (RouteID) REFERENCES Route,
CONSTRAINT Student_fk FOREIGN KEY (StudentID) REFERENCES Student);

我想比较 Booking.RouteIdRoute.RouteId 并返回不在 Booking 表中的 Id。

例如,

路由表包含路由 ID
0001
0002
0003

在预订表中预订的路线是
0001
0002

我怎样才能完成这个比较并返回值
0003

【问题讨论】:

    标签: sql oracle-sqldeveloper


    【解决方案1】:

    您可以使用left join,然后您应该检查 booking_id 是否为空。

    SELECT r.route_id 
    FROM Route r LEFT JOIN Booking b ON r.route_id=b.RouteId
    WHERE b.RouteId  is null
    

    或者您可以使用:

    SELECT r.RouteID 
    FROM Route r 
    WHERE RouteID NOT IN(SELECT b.RouteId FROM Booking b)
    

    【讨论】:

    • 连接不会给出正确的结果,因为您在错误的列上连接。 r.routeid = b.routeid
    • @tobsey 是个小错误。谢谢
    • 感谢您的回答,非常感谢。
    【解决方案2】:

    尝试以下查询:

    select R.RouteID 
    from Route R 
    where RouteID not in (select B.RouteId from Booking B)
    

    【讨论】:

    • 感谢您的回答,非常感谢。
    【解决方案3】:
    select route_id from route 
    where route_id not in ( select route_id from booking )
    

    【讨论】:

    • 感谢您的回答,非常感谢。
    【解决方案4】:
    SELECT
        Route.RouteID
    FROM
        Route
    WHERE
        NOT EXISTS
        (SELECT
            NULL
        FROM
            Booking
        WHERE
            Booking.RouteID = Route.RouteID)
    

    大多数其他答案应该有效,但我更喜欢使用 EXISTS,因为这就是它的用途。

    【讨论】:

    • 感谢您的回答,非常感谢。
    【解决方案5】:

    你可以使用集合操作

     SELECT RouteID  FROM Route
     MINUS
     SELECT RouteId FROM Booking 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-20
      • 1970-01-01
      • 1970-01-01
      • 2011-05-29
      • 2018-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多