Postgresql:插入相同的数据几次

时间:2017-10-26 14:28:43

标签: postgresql plpgsql

我有一个表a,在SQL请求之后的这个表中,我有几次相同的记录。

这是我的要求。

for server_id in (select bs.id from status.servers bs
  join settings.config blc on bs.id = blc.server_id
  where blc.lane_number = (dataitem->>'No')::SMALLINT AND blc.min_length <= (dataitem->>'len')::real
)
LOOP 
  insert into a(measurement_id, server_id, status)
  VALUES (
    measurement_id,server_id,false
  );
END LOOP;    

结果我在表a中有记录,如:

id  meas_id   serv_id   status
1   12        1         f
2   12        1         f
3   12        1         f

我已经改变了一些代码,在工作代码中没有语法错误

1 个答案:

答案 0 :(得分:0)

回答

  

“为什么我有与dif id相同的记录?”

表a可能具有列id的默认值,因此值来自序列。很可能是你用serial数据类型创建的......那些结果是预期的。如果要定义值,则不应跳过标量列表中的列,因此

insert into a(measurement_id, server_id, status)

必须成为

insert into a(id, measurement_id, server_id, status)

并且相应地传递了值......

如果您期望一个结果(假设它来自server_id的相同值),则需要将distinct添加到

for server_id in (select distinct bs.id from status.servers bs

因为当前你的select会返回三行,其bs.idjoin相同,并且在连接键上有三个匹配的行...