Sql 如何将数据插入具有3个不同值的db表中,但插入其他非不同列
如何将数据插入到具有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
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