我正在使用DB2 V7.2 Express-C for Windows,需要在表中插入一定数量的行作为另一个表中的select。 我不确定,如果这是我的旧DB2版本的问题,或者我的声明存在一般问题。 所以我正在寻找替代方案。
任务是在表markierung中插入一组id,该表由2列定义为
IDUSER INTEGER不为空 IDBILD INTEGER不为空
直接向前是插入其他表格中的所有相应项目,例如
insert into markierung
select distinct
xuser.id as userid, xbild.id as bildid
from
user xuser, bild xbild, logbook xlogbook
where
xbild.id = xlogbook.oid and xuser.id = xlogbook.userid
这种方法工作正常,但我想只插入一定数量的行(最新的行)。 因此,我想做这样的事情:
insert into markierung
select distinct
xuser.id as userid, xbild.id as bildid, xlogbook.date as date
from
user xuser, bild xbild, logbook xlogbook
where
xbild.id = xlogbook.oid and xuser.id = xlogbook.userid
order by date desc fetch first 5 rows only;
第一个问题:我需要将日期添加到选择中以便与订单一起使用 因为我想插入5个最新的行。但插入只允许2列 我更改了查询
select userid, bildid from
(
select distinct
xuser.id as userid, xbild.id as bildid, xlogbook.date as date
from
user xuser, bild xbild, logbook xlogbook
where
xbild.id = xlogbook.oid and xuser.id = xlogbook.userid
) as xxx order by date desc fetch first 5 rows only;
select语句正常工作 但是当我尝试将所选结果插入表markierung时,我收到一个错误: 我正在使用这个声明:
insert into markierung
select userid, bildid from
(
select distinct
xuser.id as userid, xbild.id as bildid, xlogbook.date as date
from
user xuser, bild xbild, logbook xlogbook
where
xbild.id = xlogbook.oid and xuser.id = xlogbook.userid
) as xxx order by date desc fetch first 5 rows only;
这是错误:
SQL0104N在“BEGIN-OF-STATEMENT”意外令牌“插入 markierung select userid,“。可能的标记是:”“。 SQLSTATE = 42601
你有什么想法,我怎么只能在markierung中插入5行? 是否有替代方法或替代查询插入?