gpt4 book ai didi

mysql - 使用 CROSS JOIN 将两个表合并到现有的第三个表中 -

转载 作者:行者123 更新时间:2023-11-29 19:27:31 25 4
gpt4 key购买 nike

User_Details,包含 User_ID、状态 (1/0)、名称等

区域,包含三个区域:美国、欧洲、亚洲,各自的 ID# 1,2 和 3。

User_Region_Mapping 将 User_ID 与 Region_ID 进行映射,从而可以访问包含 User_ID、Region_ID 和 Status (1/0) 的不同区域

我正在尝试创建一个查询,将每个区域添加到每个 ACTIVE(也称为 status = 1)用户,避免 User_Region_Mapping 表中已存在的冗余数据点(将现有数据保留在那里)。

因此,每个事件用户 ID 都有三行,区域 ID 为 1、2、3,其中所有行的状态都设置为 1,因为状态不能为空。我知道我必须使用 CROSS JOIN 和 LEFT JOIN 的组合

表格脚本:

 CREATE TABLE "MYDB"."USER_REGION_MAPPING" 
( "USER_ID" NUMBER NOT NULL ENABLE,
"REGION_ID" NUMBER NOT NULL ENABLE,
"STATUS" NUMBER NOT NULL ENABLE,
"CREATED_BY" VARCHAR2(50),
"MODIFIED_BY" VARCHAR2(50),
}


CREATE TABLE "MYDB"."USER_DETAILS"
( "ID" NUMBER,
"LOGIN_ID" VARCHAR2(100),
"EMAIL_ID" VARCHAR2(150) NOT NULL ENABLE,
"REGION_CODE" NUMBER,
"FIRST_NAME" VARCHAR2(50),
"MIDDLE_NAME" VARCHAR2(50),
"LAST_NAME" VARCHAR2(50),
"IS_PRIMARY" NUMBER,
"STATUS" NUMBER NOT NULL ENABLE,
PRIMARY KEY ("ID")
}

CREATE TABLE "MYDB"."REGIONS"
( "ID" NUMBER,
"CODE" VARCHAR2(20 CHAR),
"NAME" VARCHAR2(20 CHAR),
"IS_DEFAULT" NUMBER,
"STATUS" NUMBER,
"CREATED_BY" VARCHAR2(50),
"MODIFIED_BY" VARCHAR2(50),
"CREATED_DATE" DATE,
"MODIFIED_DATE" DATE,
PRIMARY KEY ("ID")
}

请帮忙!!

最佳答案

您可以通过以下方式执行此操作:

insert into User_Region_mapping
(fieldlist)
select (fieldlist)
from USER_DETAILS, REGIONS
where USER_DETAILS.STATUS = 1
and REGIONS.STATUS = 1
and not exists (select *
from USER_REGION_MAPPING
where USER_DETAILS.id = USER_REGION_MAPPING.USER_ID
and USER_DETAILS.id
= USER_REGION_MAPPING.REGION_ID= REGIONS.ID)

语法可能并不完美,但它给了你想法。

关于mysql - 使用 CROSS JOIN 将两个表合并到现有的第三个表中 -,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42029509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com