三张表left join 去掉重复记录

时间:2022-03-08 15:12:39
CREATE
    TABLE BPM_CUSTOM_TABLE
    (
        WIID SMALLINT NOT NULL,
        APP_NAME VARCHAR(50) NOT NULL,
        TKIID VARCHAR(64) NOT NULL,
        GROUP_ID VARCHAR(50),
        USER_ID VARCHAR(50),
        STATE SMALLINT NOT NULL,
        EVERYBODY SMALLINT NOT NULL,
        STAFF_TYPE SMALLINT NOT NULL,
        PIID CHARACTER(64),
        TASK_NAME CHARACTER(50),
        PARENT_TEMPL_NAME CHARACTER(50) NOT NULL,
        DISPLAY_NAME CHARACTER(50),
        FIRST_ACTIVATION_TIME TIMESTAMP NOT NULL,
        LAST_MODIFIED_TIME TIMESTAMP NOT NULL,
        PROC_INS_STARTER VARCHAR(30),
        PROC_INS_START_TIME TIMESTAMP,
        BOID CHARACTER(128),
        BONAME CHARACTER(128)
    )


CREATE
    TABLE T_PROCURL
    (
        ID INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY,
        PT_ID VARCHAR(256),
        PT_NAME VARCHAR(256),
        PT_DISPLAYNAME VARCHAR(256),
        APPNAME VARCHAR(256),
        STARTURL VARCHAR(256),
        VIEWURL VARCHAR(256),
        TASKURL VARCHAR(256),
        POPUP SMALLINT,
        IGNORETASK SMALLINT,
        LASTUPDATETIME TIMESTAMP,
        CONSTRAINT P_KEY_1 PRIMARY KEY (ID)
    );


CREATE
    TABLE T_TASKURL
    (
        ID INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY,
        PID INTEGER,
        TK_ID VARCHAR(256),
        TK_NAME VARCHAR(256),
        TK_DISPLAYNAME VARCHAR(256),
        TASKURL VARCHAR(256),
        VIEWURL VARCHAR(256),
        LASTUPDATETIME TIMESTAMP,
        CONSTRAINT P_KEY_1 PRIMARY KEY (ID),
        CONSTRAINT F_REFERENCE_1 FOREIGN KEY (PID) REFERENCES T_PROCURL (ID) ON
    DELETE
        RESTRICT ON
    UPDATE
        RESTRICT
    );

我要查询BPM_CUSTOM_TABLE 和T_PROCURL,T_TASKURL
SELECT distinct * FROM  DB2ADMIN.BPM_CUSTOM_TABLE A LEFT JOIN DB2ADMIN.T_PROCURL B ON A.PARENT_TEMPL_NAME=B.PT_NAME
LEFT JOIN DB2ADMIN.T_TASKURL C ON A.TASK_NAME=C.TK_NAME

有大量重复记录 怎么去掉?请高手指教下

4 个解决方案

#1


你的重复是指什么?

建议能提供一些例子。 如果提供下面所说的其余两点会另人更准确理解你的问题。


   建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
   参考一下这个贴子的提问方式 http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
   
   1. 你的 create table xxx .. 语句
   2. 你的 insert into xxx ... 语句
   3. 结果是什么样,(并给以简单的算法描述)

   
   这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。

   

#2


left join 取得的最终结果和第一个表的数目一致,所以,如果有重的就是第一个本身就有重的

#3


贴记录及要求结果出来看看,没有记录,无法测试

#4


重复记录是什么样子的?

#1


你的重复是指什么?

建议能提供一些例子。 如果提供下面所说的其余两点会另人更准确理解你的问题。


   建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
   参考一下这个贴子的提问方式 http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
   
   1. 你的 create table xxx .. 语句
   2. 你的 insert into xxx ... 语句
   3. 结果是什么样,(并给以简单的算法描述)

   
   这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。

   

#2


left join 取得的最终结果和第一个表的数目一致,所以,如果有重的就是第一个本身就有重的

#3


贴记录及要求结果出来看看,没有记录,无法测试

#4


重复记录是什么样子的?