连接两个postgresql查询

连接两个postgresql查询,postgresql,Postgresql,我有以下疑问 SELECT role_uuid FROM users WHERE email = 'email@domain.com' 我还有一个角色表包含以下字段: uuid name 在 我希望有一个查询可以让我通过email选择角色,并从角色表中获取name和created\u at字段 我尝试过这样的事情,但我不太明白 SELECT * FROM ( SELECT * FROM users WHERE email = 'email@domain.com') AS A JOIN (

我有以下疑问

SELECT role_uuid FROM users WHERE email = 'email@domain.com'
我还有一个
角色表
包含以下字段:

  • uuid
  • name
我希望有一个查询可以让我通过
email
选择角色,并从角色表中获取
name
created\u at
字段

我尝试过这样的事情,但我不太明白

SELECT * 
FROM ( SELECT * FROM users WHERE email = 'email@domain.com') AS A
JOIN ( SELECT * FROM roles WHERE uuid = A.role_uuid) AS B
WHERE A.role_uuid = B.uuid

将两个表连接起来,这将为您提供一个包含两个源表中所有字段的表。然后使用WHERE to filter和SELECT指定要返回的字段

SELECT r.name, r.created_at
FROM users u JOIN roles r ON (u.role_uuid = r.uuid)
WHERE u.email = 'email@domain.com'
如果由于两个表中的字段共享同一名称而导致命名冲突,则可以使用作为定义输出列的字段名:

SELECT r.name AS rolename, u.name AS username, r.created_at
FROM users u JOIN roles r ON (u.role_uuid = r.uuid)
WHERE u.email = 'email@domain.com'

这按要求非常有效,但如果每个表中的行相同,会发生什么情况?