select *
from tablea a join
tableb b
on a.key1 = b.key1 and
a.key2 = b.key2 and
a.key3 = b.key3
where not exists (select 1
from tableb b2
where b.key1 = b2.key1 and
b.key2 = b2.key2 and
b.key3 = b2.key3 and
b2.key_seq > b.key_seq
);
0
您可以使用GROUP BY子句来完成它,但我不完全确定 .
SELECT * from A join B on A.key1=B.key1 AND A.key2=B.key2 AND A.key3=B.key3 AND B.Key_SEQ = MAX(B.Key_SEQ) GROUP BY B.key1, B.key2, B.key3;
另一种方法是使用左连接语法:
SELECT A.*, B.* from A join B on A.key1=B.key1 AND A.key2=B.key2 AND A.key3=B.key3 LEFT JOIN B as b2 on B.key1 = b2.key1 AND B.key2 = b2.key2 AND B.key3 = b2.key3 AND B.Key_SEQ < b2.Key_SEQ WHERE b2.Key_SEQ IS NULL;
2 回答
您没有提到您正在使用的SQL数据库 . 以下是标准SQL,应该在大多数数据库中都能很好地运行:
您可以使用GROUP BY子句来完成它,但我不完全确定 .
另一种方法是使用左连接语法:
这个查询基本上说“给A加入B再加入B,其中第二个B大于第一个B,但第二个B不存在” . 换句话说,没有B高于第一B.