【问题标题】:JOIN on two tables加入两个表
【发布时间】:2021-05-14 18:15:50
【问题描述】:

我有两张桌子:

user:

id   username       name
1aa   sample.user    Sample User   

credential:

id  userId  type         value
1   1aa     salt         abc123
2   1aa     password     samplehashpassword

我想执行查询以获得以下结果(每个用户一行):

userId  username      name            type      value     type        value
1aa     sample.user   Sample User     salt      abc123    password    samplehashpassword   

现在我正在执行这个查询:

SELECT
    "userId", username, name, type, value
FROM
    public.user u 
INNER JOIN public.credential c
    ON u.id = c."userId";
    

这会导致:

userId  username      name            type      value
1aa     sample.user   Sample User     salt      abc123

userId  username      name            type      value
1aa     sample.user   Sample User     password  samplehashpassword  

我想要一个用户的单行。我怎样才能做到这一点?

【问题讨论】:

    标签: sql postgresql join


    【解决方案1】:

    你可以使用两个joins:

    SELECT u.*, cs.type, cs.value, cp.type, cp.value
    FROM public.user u INNER JOIN
         public.credential cs
         ON u.id = cs."userId" AND cs.type = 'salt' INNER JOIN
         public.credential cp
         ON u.id = cp."userId" AND cp.type = 'password';
     
    

    【讨论】:

    • 完美,这正是我所需要的
    猜你喜欢
    • 2018-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多