TableA有两个字段:Title BID,TableB有三个字段:ID Name Age其中TableA的BID与TableB的ID关联,一个TableB可能关联多个TableA关联,也就是说,多条TableA信息可能同时对应一条TableB信息。现在我想实现这样一个功能:取出TableA的数据,但是只要在TableB中Age最小的
(也就是说,如果10条TableA信息对应同一条TableB信息,那么只要TableB中Age最小的一套,实际上TableA就只要这一条数据)这个功能不知道能不能通过一条SQL语句来实现,麻烦高人指点

解决方案 »

  1.   

    楼主的逻辑有错误
    参考典型的一对多关系
    既然10条A对应1条B
    可以认为B是唯一的,唯一的B的Age又何来最大最小?
      

  2.   

    select * from tablea where bid in (select ID as bid ,min(Age) from tableb group by id)
      

  3.   

    抱歉,这大脑被转晕了,Age在TableA里,是取TableA最小Age的
      

  4.   

    举个实例:
    TableA.Name  TableA.Age  TableA.BID  TableB.TitleName1        30          1           Title1
    Name2        32          1           Title1
    Name3        24          1           Title1
    Name4        18          2           Title2
    Name5        25          2           Title2我想得到这样的结果:
    TableA.Name  TableA.Age  TableA.BID  TableB.TitleName3        24          1           Title1
    Name4        18          2           Title2
      

  5.   

    实际上不用去考虑TableB表,就只考虑TableA
      

  6.   

    to: 楼主如果10条TableA信息对应同一条TableB信息,那么只要TableB中Age最小的一套
    实际上TableA就只要这一条数据
    -----------------------------------------------------------------------TableB中Age最小的ID对应10条TableA信息 ,咋办?
      

  7.   

    只考虑一对多,反过来不考虑,因为这个地方的功能不要item信息,其它地方才用到item信息,那是另外的功能
      

  8.   

    Name1        30          1           Title1
    Name2        32          1           Title1
    Name3        24          1           Title1
    Name4        18          2           Title2
    Name5        25          2           Title2
    Name3        24          2           Title2希望得到的结果是Name3        24          1           Title1
    Name4        18          2           Title2
      

  9.   

    SELECT TableA.Age  
    FROM TableA AS A
    WHERE TableA.Age = (select min(Age) from TableA AS B WHERE B.BID = A.BID )
      

  10.   

    SELECT TableA.Name  TableA.Age  TableA.BID  TableB.Title
    FROM TableA as a1,TableB
    WHERE   (TableA.BID  = TableB.ID)
        AND (a1.Age = (select min(Age) from TableA AS a2 WHERE a2.BID = a1.BID )
      

  11.   

    BEGIN TRANCREATE TABLE TableA
    (
    [Name] VARCHAR(30), 
    Age INT,
    BID INT)INSERT INTO TableA
    SELECT 'Name1', 30, 1 UNION ALL
    SELECT 'Name2', 32, 1 UNION ALL
    SELECT 'Name3', 24, 1 UNION ALL
    SELECT 'Name4', 18, 2 UNION ALL
    SELECT 'Name5', 25, 2 UNION ALL
    SELECT 'Name3', 24, 2CREATE TABLE TableB
    (
    [ID] INT,
    Title VARCHAR(30)
    )INSERT INTO TableB
    SELECT 1, 'Title1' UNION ALL
    SELECT 2, 'Title2'SELECT a.[Name], a.Age, b.[ID], b.Title
    FROM (SELECT Age = MIN(Age), BID
      FROM TableA
      GROUP BY BID) t 
    INNER JOIN TableA a ON t.Age = a.Age AND t.BID = a.BID
    INNER JOIN TableB b ON t.BID = b.[ID]ROLLBACK