Sql 如何将数据插入具有3个不同值的db表中,但插入其他非不同列

Sql 如何将数据插入具有3个不同值的db表中,但插入其他非不同列,sql,oracle,distinct,composite-key,Sql,Oracle,Distinct,Composite Key,如何将数据插入到具有3个不同值的db表中,同时插入其他非不同列? 所以我有一张桌子 data user __________________________________ user_id user_id train_code train_code version version score score first_name

如何将数据插入到具有3个不同值的db表中,同时插入其他非不同列? 所以我有一张桌子

data               user
__________________________________
user_id            user_id
train_code         train_code
version            version
score              score
                   first_name
                   last_name
                   nick_name
因此,我的
数据
组合键包括
(用户id、列车代码、版本)

如何从
用户
表格将数据插入
数据
表格 其中(用户id、列车代码、版本)是不同的,但也添加了分数列

我应该删除复合键约束吗

user_id |     train_code    | version


如果您不介意在同一复合键有多个分数时对任何分数进行,您可以执行以下操作:

insert into data (user_id, train_code, version, score)
select user_id , train_code,version, max(score)
from user
group by user_id, train_code, version

当然,我对“max(…)”的使用是任意的,并且假设特定的分数对您来说并不重要。i、 e.您可以使用min(…),这对您来说都是一样的。

用户表中相同(用户id、列车代码、版本)的“分数”是否有多个值?如果是,是否要返回所有值?是的,有多个值,我想从用户表返回任何分数。我所关心的是前3行是否不同。如果用户表中有多行具有相同的用户Id、训练代码、版本,则需要删除复合约束。因为我知道我可以通过在前面放置distinct使它们都不同:distinct User Id、训练代码、版本、分数;对吗?同一个用户使用相同的培训代码可能参加了不同的课程版本
insert into data (user_id, train_code, version, score)
select user_id , train_code,version, max(score)
from user
group by user_id, train_code, version