Sql 类似的
我有5张桌子:Sql 类似的,sql,Sql,我有5张桌子: Artists (artistID: int, name: varchar(255)) SimilarArtists (artistID: int, simArtistID: int, weight: int) Albums (albumID: int, artistID: int, name: varchar(255)) Tracks (trackID: int, artistID: int, name: varchar(255), length: int) Trac
Artists (artistID: int, name: varchar(255))
SimilarArtists (artistID: int, simArtistID: int, weight: int)
Albums (albumID: int, artistID: int, name: varchar(255))
Tracks (trackID: int, artistID: int, name: varchar(255), length: int)
TrackLists (albumID: int, trackID: int, trackNum: int)
找到所有与莫格威更相似而非涅盘的艺术家的名字(这意味着他们与莫格威的相似程度更大)
暴力查询:),请检查空值
select * from (
select
(select weight from similiarartists sa, artists aa where sa.simartistid = aa.artistid and sa.artistid = a.artistid and aa.name = 'Nirvana') nirvana,
(select weight from similiarartists sa, artists aa where sa.simartistid = aa.artistid and sa.artistid = a.artistid and aa.name = 'Mogwai') mogwai,
a.*
from artists a
) where a.mogwai > a.nirvana
这是我的尝试
select *
from artists a
left join
(select sa.artistid, weight from similiarartists sa, artists aa where sa.simartistid = aa.artistid and sa.artistid = a.artistid and aa.name = 'Nirvana') nirvana on nirvana.artistid = a.artistid
left join
(select sa.artistid, weight from similiarartists sa, artists aa where sa.simartistid = aa.artistid and sa.artistid = a.artistid and aa.name = 'Mogwai') mogwai on mogwai.artistid = a.artistid
where mogwai.weight > nirvana.weight;
没有足够的信息来回答这个问题。请提供一些样本数据。特别是,表
是否是可交换的,也就是说,如果表中的(A,B)是(B,A)?而且,不在表中是不是证明相似性是0
还是表中的所有对?
select *
from artists a
left join
(select sa.artistid, weight from similiarartists sa, artists aa where sa.simartistid = aa.artistid and sa.artistid = a.artistid and aa.name = 'Nirvana') nirvana on nirvana.artistid = a.artistid
left join
(select sa.artistid, weight from similiarartists sa, artists aa where sa.simartistid = aa.artistid and sa.artistid = a.artistid and aa.name = 'Mogwai') mogwai on mogwai.artistid = a.artistid
where mogwai.weight > nirvana.weight;