正如主题一样。举个简单的例子,我有桌子:
Cars(
TEXT make,
INTEGER value,
TEXT owner
);
有这样的记录:
('BMW', 100000, 'AcmeCompany')
('BMW', 350000, 'XCompany')
('Lamborgini', 500000, 'YCompany')
('Fiat', 30000, 'ZCompany')
('BMW', 200000, 'XCompany')
我希望创建包含makeID列的表格(不要问为什么,它只是一个例子:P)
Informations(
INTEGER makeID
other_stuff
)
我在makeID上有序列,只有在我的SELECT中有新的make in值时才需要增加序列(它就像从字符串到整数的transtalion;如果有可能我不想要sha1或其他加密事物只是一个简单的序列!)
INSERT INTO Informations(makeID) (
-- IF I have new value: SELECT nextVal('mysequence')
-- ELSE : SELECT currval('mysequence')
)
我知道应该可以通过pgsql函数(按' make'列排序表,然后将' make'的最后一个值保存到临时变量中并使用检查值执行INSERT INTO我的实际' make'值是否为temp值,用于递增序列变量)。但是有更简单的方法,只是通过查询? join,sort和distinct的组合?
答案 0 :(得分:0)
不确定我理解。它只是serial
select distinct
create table make (
make_id serial,
make_brand text,
make_owner text
);
insert into make (make_brand, make_owner)
select distinct make, owner
from cars;