Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.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 - Fatal编程技术网

Oracle SQL从具有非唯一值的匹配行中选择唯一值和一个值

Oracle SQL从具有非唯一值的匹配行中选择唯一值和一个值,sql,oracle,Sql,Oracle,我有两个表,一个主表和一个通用信息表。我需要从常规表更新主表。当常规信息表的描述值可能略有不同时,如何更新主表 掌握 +------+---------+ | Code | Desc | +------+---------+ | 156 | Milk | | 122 | Eggs | | 123 | Diapers | +------+---------+ 信息 +------+---------------+--------+ | Code | Desc

我有两个表,一个主表和一个通用信息表。我需要从常规表更新主表。当常规信息表的描述值可能略有不同时,如何更新主表

掌握

+------+---------+
| Code |  Desc   |
+------+---------+
|  156 | Milk    |
|  122 | Eggs    |
|  123 | Diapers |
+------+---------+
信息

+------+---------------+--------+
| Code |     Desc      | Price  |
+------+---------------+--------+
|  156 | Milk          | $3.00  |
|  122 | Eggs          | $2.00  |
|  123 | Diapers       | $15.00 |
|  124 | Shopright Cola| $2.00  |
|  124 | SR Cola       | $2.00  |
+------+---------------+--------+
如您所见,项目124有2个描述。哪种描述都无所谓

我的尝试是用这两个代码返回124,我知道我的代码在主代码中寻找唯一的代码和描述,这就是为什么它同时返回这两个124,但我不确定如何修复它

INSERT INTO MASTER
(
SELECT UNIQUE(Code), Desc FROM INFO A
WHERE NOT EXISTS
   (SELECT Code FROM MASTER B
   WHERE A.Code = B.Code )
);
我也尝试过:

INSERT INTO MASTER
(
SELECT UNIQUE(PROC_CDE), Desc FROM FIR_CLAIM_DETAIL A
WHERE Code NOT IN
    (SELECT Code FROM FIR_CODE_PROC_CDE_MSTR B
    WHERE A.Code = B.Code )
);

Unique会在所有列(而不仅仅是一个键)中过滤所选
结果集中的重复条目

当您要提取筛选的密钥的其他属性时,必须指示数据库首先对唯一密钥进行分组。要选择分组键的一个属性,我们可以使用
AGGREGATE
函数。像
MAX()
MIN()


即使是复杂的需求,也可以使用一些方法。

您编写“我需要更新我的主表”,但您的示例都是
SELECT
语句。你到底想做什么?只需显示这些值或实际运行
UPDATE
语句即可更改主表?
groupbycode
selectmin/MAX(Desc)
对不起,我忘了在中添加Insert语句。在插入值之前,我正在使用select来识别问题/验证结果,因为主表需要只有唯一的代码。这很有效!非常感谢,我还是SQL新手。
INSERT INTO MASTER
(
SELECT PROC_CDE, MAX(Desc) FROM FIR_CLAIM_DETAIL A
WHERE Code NOT IN
    (SELECT Code FROM FIR_CODE_PROC_CDE_MSTR B
    WHERE A.Code = B.Code )
GROUP BY PROC_CDE
);