Teradata 插入不存在且不工作的位置

Teradata 插入不存在且不工作的位置,teradata,Teradata,这是一个简单的select语句,我试图在其中插入任何带有时间戳的新更新。由于某种原因,它似乎不起作用。一切看起来都很好,但当我测试查询时,它似乎不起作用 INSERT sandbox.inv_room_type_inventory_snpsht SELECT id, hotel_id, room_type_id, date__, stop_sell, inventory_count, created, modified__, current_timestamp as snaps

这是一个简单的select语句,我试图在其中插入任何带有时间戳的新更新。由于某种原因,它似乎不起作用。一切看起来都很好,但当我测试查询时,它似乎不起作用

INSERT sandbox.inv_room_type_inventory_snpsht 
SELECT id, hotel_id, room_type_id, date__, stop_sell, 
   inventory_count, created, modified__, 
   current_timestamp as snapshot_ts FROM user_gp.inv_room_type_inventory
WHERE    NOT EXISTS
  (SELECT id, hotel_id, room_type_id, date__, stop_sell, 
      inventory_count, created, modified__ 
   FROM sandbox.inv_room_type_inventory_snpsht
  );

有人能帮忙吗?

它不起作用的原因是您没有正确地编写查询。基本上,当“sandbox.inv\u room\u type\u inventory\u snpsht”表中没有记录时,您要求插入值。因此,换句话说,即使“sandbox.inv\u room\u type\u inventory\u snpsht”中只存在一条记录,它也不会插入任何内容

我假设您想检查您试图插入的id是否存在于“sandbox.inv\u room\u type\u inventory\u snpsht”表中。在这种情况下,您需要在not exists条件中添加where子句,因此,它看起来像:

WHERE NOT EXISTS (SELECT id, hotel_id, room_type_id, date__, stop_sell, inventory_count, created, modified__ 
FROM sandbox.inv_room_type_inventory_snpsht
WHERE id = user_gp.inv_room_type_inventory.id);
MERGE INTO sandbox.inv_room_type_inventory_snpsht AS tgt
USING 
 (
   SELECT id, hotel_id, room_type_id, date__, stop_sell, 
      inventory_count, created, modified__, 
      current_timestamp as snapshot_ts 
   FROM user_gp.inv_room_type_inventory
 ) AS src
ON src.id = tgt.id
AND .....
WHEN NOT MATCHED THEN INSERT
VALUES (src.id, src.hotel_id, src.room_type_id,
        src.date__, src.stop_sell, 
        src.inventory_count, src.created, src.modified__,
        src.snapshot_ts
       )
 ;

它不起作用的原因是您没有正确编写查询。基本上,当“sandbox.inv\u room\u type\u inventory\u snpsht”表中没有记录时,您要求插入值。因此,换句话说,即使“sandbox.inv\u room\u type\u inventory\u snpsht”中只存在一条记录,它也不会插入任何内容

我假设您想检查您试图插入的id是否存在于“sandbox.inv\u room\u type\u inventory\u snpsht”表中。在这种情况下,您需要在not exists条件中添加where子句,因此,它看起来像:

WHERE NOT EXISTS (SELECT id, hotel_id, room_type_id, date__, stop_sell, inventory_count, created, modified__ 
FROM sandbox.inv_room_type_inventory_snpsht
WHERE id = user_gp.inv_room_type_inventory.id);
MERGE INTO sandbox.inv_room_type_inventory_snpsht AS tgt
USING 
 (
   SELECT id, hotel_id, room_type_id, date__, stop_sell, 
      inventory_count, created, modified__, 
      current_timestamp as snapshot_ts 
   FROM user_gp.inv_room_type_inventory
 ) AS src
ON src.id = tgt.id
AND .....
WHEN NOT MATCHED THEN INSERT
VALUES (src.id, src.hotel_id, src.room_type_id,
        src.date__, src.stop_sell, 
        src.inventory_count, src.created, src.modified__,
        src.snapshot_ts
       )
 ;

与其使用notexists进行插入/选择,不如使用MERGE,只需对目标表进行一次访问,就可以在一条语句中进行插入和更新。看一看这张照片

我不知道你的逻辑,但它看起来像:

WHERE NOT EXISTS (SELECT id, hotel_id, room_type_id, date__, stop_sell, inventory_count, created, modified__ 
FROM sandbox.inv_room_type_inventory_snpsht
WHERE id = user_gp.inv_room_type_inventory.id);
MERGE INTO sandbox.inv_room_type_inventory_snpsht AS tgt
USING 
 (
   SELECT id, hotel_id, room_type_id, date__, stop_sell, 
      inventory_count, created, modified__, 
      current_timestamp as snapshot_ts 
   FROM user_gp.inv_room_type_inventory
 ) AS src
ON src.id = tgt.id
AND .....
WHEN NOT MATCHED THEN INSERT
VALUES (src.id, src.hotel_id, src.room_type_id,
        src.date__, src.stop_sell, 
        src.inventory_count, src.created, src.modified__,
        src.snapshot_ts
       )
 ;

与其使用notexists进行插入/选择,不如使用MERGE,只需对目标表进行一次访问,就可以在一条语句中进行插入和更新。看一看这张照片

我不知道你的逻辑,但它看起来像:

WHERE NOT EXISTS (SELECT id, hotel_id, room_type_id, date__, stop_sell, inventory_count, created, modified__ 
FROM sandbox.inv_room_type_inventory_snpsht
WHERE id = user_gp.inv_room_type_inventory.id);
MERGE INTO sandbox.inv_room_type_inventory_snpsht AS tgt
USING 
 (
   SELECT id, hotel_id, room_type_id, date__, stop_sell, 
      inventory_count, created, modified__, 
      current_timestamp as snapshot_ts 
   FROM user_gp.inv_room_type_inventory
 ) AS src
ON src.id = tgt.id
AND .....
WHEN NOT MATCHED THEN INSERT
VALUES (src.id, src.hotel_id, src.room_type_id,
        src.date__, src.stop_sell, 
        src.inventory_count, src.created, src.modified__,
        src.snapshot_ts
       )
 ;

知道了。它就像一个相关的子查询。。谢谢。它就像一个相关的子查询。。谢谢