sql对两个结果导致两个不同的列

时间:2017-08-26 17:29:39

标签: mysql sql database sqlite

我正在使用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)

2 个答案:

答案 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现在您对审核者表进行了联接,该表的别名为r1r2r1.rid <> r2.rid表示“来自两个别名,请确保您获得ID不同的那个。”

(select name 
 from reviewer 
 where r1.rid = rid) < (select name 
                        from reviewer 
                        where rid = r2.rid)

您正在检索任何可能重复的名称的第一个实例。