一个SQL中有多个列

时间:2016-08-11 10:34:41

标签: sql postgresql

我可以在一个中插入来自不同列的多个值吗?

我有:

ref | alt | couple_refalt
--------------------------
 A     C       AC ( i want)
 A     G       AG         Etc...

有简单的方法吗?

我尝试过:

INSERT INTO refalt(couple_refalt)
SELECT ref||alt
FROM refalt
WHERE ref='A';

这是对的吗?

但它给了我错误:

null value in column violates not-null constraint

Postgres想要每个列的值,为什么我不能更新或插入特定列?

2 个答案:

答案 0 :(得分:1)

存储逗号分隔值不是存储值的SQLish方式。你似乎想要的是一个计算列。 Postgres不直接支持。一种方法是声明一个视图:

create view v_refault
    select r.*, ref || ',' || alt
    from refault;

其他可能性是:

  • 定义触发器以维持该值。
  • 在应用程序级别连接值。
  • 使用基于函数的方法模拟计算列。

答案 1 :(得分:0)

为了将两个值插入一列,您需要将它们连接起来。在postgresql中,语法如下。

SELECT ref::text || ', ' || alt::text FROM refalt

如果您想了解更多详情,请参阅string documentation