我们假设我在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
类型?
答案 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,所以不需要在第二次选择中同时包含两者)。