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语句来实现,麻烦高人指点
(也就是说,如果10条TableA信息对应同一条TableB信息,那么只要TableB中Age最小的一套,实际上TableA就只要这一条数据)这个功能不知道能不能通过一条SQL语句来实现,麻烦高人指点
参考典型的一对多关系
既然10条A对应1条B
可以认为B是唯一的,唯一的B的Age又何来最大最小?
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
实际上TableA就只要这一条数据
-----------------------------------------------------------------------TableB中Age最小的ID对应10条TableA信息 ,咋办?
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
FROM TableA AS A
WHERE TableA.Age = (select min(Age) from TableA AS B WHERE B.BID = A.BID )
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 )
(
[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