比较postgres中的UUID

时间:2017-02-27 22:37:27

标签: sql postgresql uuid

我们假设我在Postgres中创建了两个表UUID作为PRIMARY KEY。这些UUID是使用Postgres中的uuid-ossp模块生成的:https://www.postgresql.org/docs/9.5/static/uuid-ossp.html

CREATE TABLE f(  
    idFoo UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    foo TEXT
);

CREATE TABLE b (
    idBar UUID,
    bar text,
    FOREIGN KEY (idBar) REFERENCES foo(idFoo)
);

然后我想基于以上两个表创建一个VIEW:

 CREATE OR REPLACE VIEW foobar AS (
     SELECT fooid, barid
     FROM foo, bar
     WHERE f.idFoo = b.idBar
     -- AND some other condition --
 );

问题:如何比较UUID类型?

1 个答案:

答案 0 :(得分:2)

不要比较UUID,你正在寻找加入它们:

CREATE OR REPLACE VIEW foobar AS (
   SELECT f.foo, b.bar, f.id 
     FROM f JOIN b USING (id)
    WHERE  -- some other condition --
);

要在不同的列上加入,您可以:

CREATE OR REPLACE VIEW foobar AS (
   SELECT f.foo, b.bar, idFoo, idBar 
     FROM f JOIN b ON (idFoo = idBar)
    WHERE  -- some other condition --
);

(当然,因为idFoo = idBar,所以不需要在第二次选择中同时包含两者)。