我的电影桌在这里,
title year length incolor studioName producerC#
Avengers 2012 142 1 Marvel 12345
First Avenger 2011 123 1 Marvel 38664
Justice League 2017 121 1 DC 11223
Man of Steel 1925 142 1 DC 38664
Man of Steel 2013 142 1 DC 11223
Ted 2012 106 1 Universal 87654
Toy Story 3 2010 102 1 Pixar 23456
我想找到“已用于两部或更多电影的标题”。
答案是“钢铁侠”,因为这部电影的年份是1925年,2013年,所以使用了两次。
我的查询在这里
select distinct movie.title
from movie, (select * from movie) as temp
where temp.title = movie.title
AND (temp.year != movie.year OR temp.length != movie.length OR temp.studioName != movie.studioName);
方面,结果就是Man of Steel
我想要的。
但我不了解电影的时间差异。
两个表的值完全相同,因此temp.title = movie.title
应select title from movie;
并且temp.year != movie.year
应为null,因为temp.year != movie.year
与select year from movie where movie.year != movie.year
但是结果是“钢铁侠”,我无法理解我错过了什么。
在您的查询中,“温度”和“电影”都是完全相同的表SELF JOIN
,换句话说,联接的目的是匹配两个电影标题,而另一个特征中的至少一个不同,可以是“年”,“长度”或“工作室名称”。这就是为什么它WHERE
在OR
条件中以不相等的符号在语句中给出的原因。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句