一个SQL Server左连接的问题,和理解的不一样

    技术2022-05-11  58

    回答网友提问时发现左连接的问题,不知为何以下两种写法结果不一样

     

    USE tempdbCREATE TABLE Bus(   ID      INT IDENTITY PRIMARY KEY,    [Name]  NVARCHAR(50),    [Time]  DATETIME,    State   NVARCHAR(10))

    INSERT INTO BUS ( [Name], [Time], [State])SELECT N'汽车A',    '2001-1-1 1:1:1' ,       N'出发'     UNIONSELECT N'汽车A' ,   '2001-1-1 2:2:2',        N'返回'     UNIONSELECT N'汽车B' ,   '2001-1-1 3:3:3',        N'出发'    UNIONSELECT N'汽车C' ,   '2001-1-1 5:5:5',        N'出发'    UNIONSELECT N'汽车B' ,   '2001-1-1 4:4:4',        N'返回'    UNIONSELECT N'汽车C' ,   '2001-1-1 6:6:6',        N'返回'    UNIONSELECT N'汽车D' ,   '2001-1-1 7:7:7',        N'出发'

    --STATE1SELECT A.NAME,A.TIME AS '出发时间',B.Time as '返回时间'FROM Bus A     LEFT JOIN (SELECT Name, Time                 FROM Bus c                 WHERE c.State = N'返回'                )B ON A.Name = B.NameWHERE A.State=N'出发'

    --STATE2SELECT A.NAME, A.TIME AS '出发时间', B.Time as '返回时间'FROM Bus A     LEFT JOIN Bus B ON A.Name = B.NameWHERE A.State=N'出发'    AND B.State=N'返回'

    DROP TABLE Bus


    最新回复(0)