sqlserver 两表查询1对多,随机取一条数据 求sql语句

有两个表一个表daoru表是需要处理的表是一个音乐记录表,里面记录了艺人以及演唱的歌曲名和歌曲的isrc等但是这个表只有一列也就是[trackartist]有值,其他很多... 有两个表一个表daoru表是需要处理的表是一个音乐记录表,里面记录了艺人以及演唱的歌曲名和歌曲的isrc等但是这个表只有一列也就是[track artist]有值,其他很多列都是空,另外一个表jibiao是参照表里面有很多艺人演唱的所有歌曲。数据比较齐全。个列都有数据,现在要求是用daoru表中的[track artist]对应jibiao中artist也就是演唱者相同,之后取出jibiao中对应的数据去更新daoru表,但是一个演唱者会唱很多歌曲,所以daoru表中的一个[track artist]会在jibiao中找到很多相同的artist,需要随机取出一条,补充到daoru表中。

CREATE TABLE [dbo].[jibiao] (
[isrc] nvarchar(50) NULL ,
[track_name] nvarchar(800) NULL ,
[artist] nvarchar(800) NULL ,
[upc] nvarchar(50) NULL ,
[album_artist] varchar(800) NULL ,
[album_title] nvarchar(800) NULL
)
go

CREATE TABLE [dbo].[daoru] (
[isrc] nvarchar(255) NULL ,
[track title] nvarchar(255) NULL ,
[track artist] nvarchar(255) NULL ,
[source upc] nvarchar(255) NULL ,
[album artist] nvarchar(255) NULL ,
[album title] nvarchar(255) NULL
)

GO
-
需要在艺人名相同情况下随机取tb2中演唱歌曲名去一一补齐tb1中的字段 tb1
tb1
艺人 演唱歌曲名
a
null
b null
c null
a
null
s null
d null
e null

tb2

艺人 演唱歌曲名
a aa
a ab
b bb
b ba
b bbb
d dd
d d2
f ddd
c cc

艺人 演唱歌曲名称
a aa (tb1中的艺人名会出现好几次每次在tb2中,只要随机的一条来填充)
a ab
b bb
d dd
c cc

补充问题到最大值了,我就发到这里吧,
tb1表没有主键
这个帖子已经不能子在追加提问了,您可以加我qq 214524253
也可以去这个帖子帮忙回复,谢谢您的回答!http://bbs.51cto.com/thread-1140280-1.html
展开
 我来答
百度网友cc7dce5
推荐于2017-09-23 · TA获得超过371个赞
知道小有建树答主
回答量:436
采纳率:0%
帮助的人:379万
展开全部

你两个表的  [track artist]  各弄出一点贴出来看看   


主要是看看  要用  like 还是要用 = 号

或者是有什么明显的特征


如果是有相同的 那么就简单了

UPDATE daoru SET isrc = (SELECT TOP 1 isrc from jibiao where [artist] = daoru.[artist])

你要更新多歌字段 就参考这个去修改一下

更多追问追答
追问

名称是相同的,主要问题是

  1. 需要批量处理更新

  2. daoru表里面的artis名称有重复的对应的jibiao中的artis也是有重复的,但是jibiao.artis对应的isrc也即是需要去除来的那列,有很多这个不是重复的,现在是要根据daoru表中artis和jibiao中的artis相同找基本对应的isrc出来填充到daoru表中。

追答
你的意思是  daoru 表里面有多个相同的 [artist]     jibiao表里面也有多个相同的 [artist]  
你需要这两个匹配到后
然后再匹配 两个表中的 isrc 来进行比较?

批量更新是没有问题的
最多写个过程 用游标去弄
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式