Postgres查询以连接两个表

时间:2019-02-07 18:38:12

标签: postgresql

我在Postgres数据库中有两个表。每个表中都有一列,代表相同的数字。我尝试了很少的联接查询来联接具有相似列号的两个表,但没有一个给我期望的输出。

  
    表1中的

user_id 列等于表2中的 Id

  

如何连接这两个表?

我在下面和其他一些查询中也进行了尝试,但是没有得到我想要的

  

选择members.access_level,members.user_id从成员INNER JOIN用户到members.user_id = users.id;

表格列如下所示

  

会员表

id |access_level |source_id |user_id |type
  

用户表

id |email |name |username 
  

查询输出应如下所示:

username |name |email |access_level

2 个答案:

答案 0 :(得分:1)

SELECT  u.username
        , u.name
        , u.email
        , m.access_level
FROM users u
    JOIN members m ON (u.id = m.user_id)
;

如果希望成员表中未包含的用户可以加入LEFT JOIN

要解决您在评论中提出的问题,我相信您会寻找以下内容:

UPDATE members SET access_level = 'dev' WHERE access_level = '30';

这是假设该列已为text类型。否则,您首先需要使用以下命令更改数据类型:

ALTER TABLE members
    ALTER access_level SET DATA TYPE text;

答案 1 :(得分:0)

 SELECT users.*, members.user_id, members.acces_level 
 FROM   members 
 LEFT JOIN users 
 WHERE users.id = members.user_id