我有2个表,我想将表b的最高但未超过修订行加入表a
表a:
REVISION_NO INFO1
1 a
2 b
3 c
4 d
5 e
6 f
表b:
REVISION_NO INFO2
1 x
4 y
6 z
我想:
a x
b x
c x
d y
e y
f z
一些加入专家知道如何实现这一目标?如果重要,数据库就是Firebird
答案 0 :(得分:0)
这是SQL Server 2008的可行解决方案。
BEGIN
DECLARE @a TABLE(REVISION_NO INT, INFO1 CHAR(1))
DECLARE @b TABLE(REVISION_NO INT, INFO2 CHAR(1))
INSERT INTO @a VALUES
(1, 'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e'),(6,'e')
INSERT INTO @b VALUES
(1,'x'),(4,'y'),(6,'z')
--
SELECT a.INFO1
, ISNULL(b.INFO2, (
SELECT INFO2 FROM @b WHERE REVISION_NO = (
SELECT MAX(REVISION_NO)
FROM @b
WHERE REVISION_NO < a.REVISION_NO
))) [INFO2]
FROM @a a
LEFT JOIN @b b
ON b.REVISION_NO = a.REVISION_NO
END
不知道firebird是否允许进行下一次查询
答案 1 :(得分:-1)
只是sql:
select a.info01, b.info02
from a
inner join b on b.revision_no = (select max(revision_no)
from b
where revision_no <= a.revision_no)
返回:
INFO01 INFO02
====== ======
a x
b x
c x
d y
e y
f z