本帖最后由 ykj7890 于 2012-06-27 17:28:21 编辑

解决方案 »

  1.   

    select *,(select top 1 sex from tblB where aid=tblA.id order by 主键 desc) as 性别,*,(select top 1 毕业日期 from tblB where aid=tblA.id order by 主键 desc) as 毕业日期 from tblA
      

  2.   

    SELECT * FROM [a] 
    LEFT JOIN [b]  AS t
    ON a.id=t.id 
    AND NOT EXISTS(SELECT 1 FROM b WHERE [id]=t.[id] AND [date]>t.[date])多加一个过滤条件。
      

  3.   

    SELECT  *
    FROM    ta a
            INNER JOIN tb b ON a.uid = b.uid
    WHERE   NOT EXISTS ( SELECT 1
                         FROM   tb
                         WHERE  uid = b.uid
                                AND [date] > t.[date] )
      

  4.   


    IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'A')
    BEGIN
    DROP TABLE A
    END
    GO
    CREATE TABLE A
    (
    ID VARCHAR(10),
    Name VARCHAR(10)
    )
    GO
    INSERT INTO A
    SELECT '3711021994','张三' UNION
    SELECT '3711021989','李四'
    GO
    IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'B')
    BEGIN
    DROP TABLE B
    END
    GO
    CREATE TABLE B
    (
    ID VARCHAR(10),
    Sex VARCHAR(10),
    Gra VARCHAR(10),
    Date VARCHAR(10)
    )
    GO
    INSERT INTO B
    SELECT '3711021994', '男', '2008毕业', '2012.06.27' UNION
    SELECT '3711021994', '女', '2010毕业', '2012.06.28'
    GOSELECT A.ID,
    A.Name,
           Sex,
           Gra,
           Date
    FROM A LEFT OUTER JOIN (
    select ID,
           Sex,
           Gra,
           Date
    from B AS t
    where (select count(*) from B where ID=t.ID and Date>t.Date )<1) AS C ON A.ID = C.ID
      

  5.   

    --> 测试数据:[A]
    IF OBJECT_ID('[A]') IS NOT NULL DROP TABLE [A]
    GO 
    CREATE TABLE [A]([id] BIGINT,[name] VARCHAR(4))
    INSERT [A]
    SELECT 3711021994,'张三' UNION ALL
    SELECT 3711021989,'李四'--> 测试数据:[B]
    IF OBJECT_ID('[B]') IS NOT NULL DROP TABLE [B]
    GO 
    CREATE TABLE [B]([id] BIGINT,[sex] VARCHAR(2),[graduate] VARCHAR(8),[date] DATETIME)
    INSERT [B]
    SELECT 3711021994,'男','2008毕业','2012.06.27' UNION ALL
    SELECT 3711021994,'女','2010毕业','2012.06.28'
    --------------开始查询--------------------------SELECT * FROM [a] 
    LEFT JOIN [b]  AS t
    ON a.id=t.id 
    AND NOT EXISTS(SELECT 1 FROM b WHERE [id]=t.[id] AND [date]>t.[date])
    ----------------结果----------------------------
    /* 
    id                   name id                   sex  graduate date
    -------------------- ---- -------------------- ---- -------- -----------------------
    3711021994           张三   3711021994           女    2010毕业   2012-06-28 00:00:00.000
    3711021989           李四   NULL                 NULL NULL     NULL(2 行受影响)
    */
      

  6.   


    这样是把B表里有的查出来的.B表里没有的没显示出NULL