Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle SQL-基于非唯一数据合并两个表_Sql_Oracle_Sql Merge - Fatal编程技术网

Oracle SQL-基于非唯一数据合并两个表

Oracle SQL-基于非唯一数据合并两个表,sql,oracle,sql-merge,Sql,Oracle,Sql Merge,基本上,我们正在寻找一种方法,将一个充满错误数据的表与一个有好数据的表合并起来,以“修复”它,但我想要的好数据中有相当多的重复数据,我需要对这些重复数据进行分组,以便我可以进行匹配 因此,在这种情况下,简化如下: Customer_Records - Bad Data in SERIES_ID | TITLE | SERIES_ID | TYPE | | EX1 | 00000 | 1 | | EX2 | 00009 | 1 | | EX3 | 01234

基本上,我们正在寻找一种方法,将一个充满错误数据的表与一个有好数据的表合并起来,以“修复”它,但我想要的好数据中有相当多的重复数据,我需要对这些重复数据进行分组,以便我可以进行匹配

因此,在这种情况下,简化如下:

Customer_Records - Bad Data in SERIES_ID
| TITLE | SERIES_ID | TYPE |
| EX1   | 00000     |  1   |
| EX2   | 00009     |  1   |
| EX3   | 01234     |  2   |


Series_Records - Good data
| TITLE | SERIES_ID | SUBSERIES_ID |
| EX1   | 98555     | 00001
| EX1   | 98555     | 00002
| EX2   | 98764     | 00098
| EX2   | 98764     | 00108
因此,在本例中,我尝试使用SERIES Record表中的SERIES_ID更新Customer Records表中的SERIES_ID。我有一个可以与之匹敌的头衔

我的尝试如下:

merge into CUSTOMER_RECORDS CR
 using (select TITLE, SERIES_ID from SERIES_RECORDS GROUP BY TITLE, SERIES_ID) SR
    on (CR.TITLE = SR.TITLE)
  when matched then
update set CR.SERIES_ID = SR.SERIES_ID;
但是,当我这样做时,我会得到:

`A stable set of rows could not be got because of large dml activity or a non-deterministic where clause`

有什么想法吗?

如果您只关心序列号,并且序列号记录中的(标题、序列号)无论子序列号如何都是相同的,那么您就不能这样做:

merge into CUSTOMER_RECORDS CR
 using (select DISTINCT TITLE, SERIES_ID from SERIES_RECORDS ) SR
    on (CR.TITLE = SR.TITLE)
  when matched then
update set CR.SERIES_ID = SR.SERIES_ID;

序列号记录表中是否有标题相同但序列号不同的行?如果是这样的话,那么您将必须确定要选择哪一行(min/max?),或者以另一种方式将序列号与标题绑定。我尝试了上述方法,但得到了与之前相同的答案:由于大型dml活动或不确定的where子句,无法获得一组稳定的行。嗯,我使用您的示例数据运行了一个设置,合并成功了。因此,与实际表数据相比,无法从所显示的示例确定series_记录的其他情况。“从序列号记录中选择不同的标题、序列号”是否显示具有不同序列号和相同标题的记录?