如何在postgres中使用“join”

时间:2016-01-30 18:58:00

标签: sql postgresql

我有两张桌子,

  1. authorCollection包含列:author,key。
  2. 书包含列:键,标题,类型等....
  3. 有很多类型的书,我希望选择的类型不是'UNKNOWN' 我希望加入这两个表如下:

    SELECT A.key, A.author, I."Type"
    FROM authorCollection A JOIN
         book I
         ON  A.key = I.key AND I."TYPE" <> 'UNKNOWN'
    GROUP BY A.author, I."Type";
    

    但我得到的结果是:有两列名为“key”,以及作者和类型。我希望结果只有一个“关键”列,因为它们是相同的。

    我该如何解决这个问题?我尝试“自然加入”,但没有解决。感谢。

    修复

    基于此,我需要按类型和作者进行分组:

    author    type
    tom        1
    tom        2
    tom        3
    alex       3
    alex       3
    tony       1
    tony       1
    

    然后我希望找到作者的名字,他只在不同类型的书中出现过两次。 例如:

    wordsDictionary = defaultdict(list)
    for word in words:
        wordsDictionary[sort_string(word)].append(word)
    

    结果是tony和alex,他们的书出现在两种不同的类型中。汤姆出现在三种类型中,所以不是结果。如何编写查询语句来实现呢?感谢。

1 个答案:

答案 0 :(得分:0)

只需将所需的列放在select中即可。您有两个名为KEY

SELECT A.key, A.author, I."Type"
FROM authorCollection A JOIN
     book I
     ON  A.key = I.key AND I."TYPE" <> 'UNKNOWN';