我正在使用sql中的exercice: 数据库是:
电影(mID,标题,年份,导演) 英语:有一部ID号为mID的电影,一个标题,一个发行年份和一个>导演。
评论员(rID,姓名) 中文:身份证号码为rID的审稿人有一定的名称。
评级(rID,mID,星级,评级日期) 中文:评论家rID给电影mID评了一些星级(1-5)>某个评级日期。
他们使用此查询将相同的结果合并到两个clomns中:
select distinct (select name
from reviewer
where rid = r1.rid) as n1,
(select name
from reviewer
where rid = r2.rid)
from rating r1 join rating r2 using (mid)
where r1.rid <> r2.rid and (select name
from reviewer
where r1.rid = rid) < (select name
from reviewer
where rid = r2.rid)
order by n1
我不知道这部分它是如何工作的或它是什么意思:
r1.rid <> r2.rid and (select name
from reviewer
where r1.rid = rid) < (select name
from reviewer
where rid = r2.rid)
答案 0 :(得分:2)
r1.rid <> r2.rid
表示r1.rid NOT EQUAL TO r2.rid
和
(select name from reviewer
where r1.rid = rid) < (select name from reviewer
where rid = r2.rid)
装置
get reviewer name whose value is less than other
基本上两个条件都是检查你没有得到任何重复值
另请注意,如果您删除了任何条件,则可能会出现重复/双重条目
答案 1 :(得分:1)
r1.rid <> r2.rid
现在您对审核者表进行了联接,该表的别名为r1
和r2
。 r1.rid <> r2.rid
表示“来自两个别名,请确保您获得ID不同的那个。”
(select name
from reviewer
where r1.rid = rid) < (select name
from reviewer
where rid = r2.rid)
您正在检索任何可能重复的名称的第一个实例。