PostgreSQL条件连接 - 如果列不为NULL

时间:2016-12-06 10:25:14

标签: sql-server postgresql join conditional

我有一张桌子" temp"

    author  |  title  |  bibkey  | Data
    -----------------------------------
    John    | JsPaper | John2008 |  65
    Kate    | KsPaper |          |  60
            |         | Data2015 |  80

由此我想制作两个表格,一个' sample_table'和' ref_table'像这样:

sample_table:

    sample_id|ref_id| data
    --------------------------
        1    |  1   |  65
        2    |  2   |  60
        3    |  3   |  80

ref_table:

    ref_id  | author  |  title  | bibkey 
    --------------------------------------
       1    |  John   | JsPaper | John2008
       2    |  Kate   | KsPaper |         
       3    |         |         | Data2015

我创建了两个表

    CREATE TABLE ref_table (                CREATE TABLE sample_table (
        ref_id serial PRIMARY KEY,             sample_id serial PRIMARY KEY,
        author text,                           ref_id integer REFERENCES ref_table(ref_id),
        title text,                            data numeric
        bibkey text                         );
        );

并将唯一的作者,标题,bibkey行插入到参考表中,如上所述。我现在要做的是为sample_table进行连接以获取ref_id' s。对于我目前的插入声明:

    INSERT INTO sample_table (
            ref_id,data
        )
        SELECT ref.ref_id, t.data
        FROM
            temp t
            LEFT JOIN
            ref_table ref ON COALESCE(ref.author,'00000') = COALESCE(t.author,'00000')
            AND COALESCE(ref.title,'00000') = COALESCE(t.title,'00000')
            AND COALESCE(ref.bibkey,'00000') = COALESCE(t.bibkey,'00000');

但是我真的希望在连接中有一个条件语句,而不是像我一样有所有3:

  1. 如果该行存在一个bibkey,我知道它是唯一的,只能加入它。
  2. 如果bibkey为NULL,则为唯一对加入作者和标题,而不是bibkey。
  3. 这可能吗?

0 个答案:

没有答案