在另一个表的列上使用WHERE子句

时间:2016-04-17 19:53:52

标签: sql postgresql

我有这个架构。

create table "user" (id serial primary key, name text unique);
create table document (owner integer references "user", ...);

我想选择名为“vortico”的用户拥有的所有文档。我可以在一个查询中执行此操作吗?以下似乎不起作用。

select * from document where owner.name = 'vortico';

3 个答案:

答案 0 :(得分:2)

SELECT * FROM document d INNER JOIN "user" u ON d.owner = u.name 
WHERE u.name = 'vortico'

答案 1 :(得分:1)

我认为你需要加入你需要的表格。您可以使用内部联接,左联接来执行此操作,具体取决于您要显示的内容。我完全不知道您的架构,所以这里是一个关于内部联接如何工作的链接。希望这有帮助! http://www.w3schools.com/sql/sql_join.asp http://www.w3schools.com/sql/sql_join_inner.asp

答案 2 :(得分:1)

您可以使用子查询。对于你的例子,它可以更快

SELECT * FROM document WHERE 
  owner = (SELECT id FROM users WHERE name = 'vortico');