SQL查询以查找具有至少一个指定值的行

编程入门 行业动态 更新时间:2024-10-26 17:21:18
本文介绍了SQL查询以查找具有至少一个指定值的行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

假设您有两个表.一种叫做电影:

Suppose you had two tables. One called MOVIES:

  • MovieId
  • 电影名称

另一个叫ACTORS的人,其中包含出现在那些电影中的人:

Then another called ACTORS that contains people who appear in those movies:

  • MovieId
  • ActorName

现在,我想编写一个查询,该查询返回包含以下演员之一或更多的任何电影:汤姆·汉克斯",罗素·克劳"或阿诺德·施瓦辛格".

Now, I want to write a query that returns any movie that contains ONE OR MORE of the following actors: "Tom Hanks", "Russell Crowe" or "Arnold Schwarzenegger".

一种实现方法是:

SELECT DISTINCT A.MovieId, M.MovieName FROM ACTORS A INNER JOIN MOVIES M USING (MovieId) WHERE A.ActorName IN ('Tom Hanks', 'Russell Crowe', 'Arnold Schwarzenegger');

这完全可以,但是在我的情况下,我可能在WHERE子句中有多个这样的条件,所以我想找到一种方法使MOVIES表成为我从中选择的主表.

Which is perfectly fine, however in my case I might have several more of these conditions on the WHERE clause so I want to find a way to make the MOVIES table the primary table I select from.

查询此内容的最佳方法是什么?如果那很重要,我正在使用Oracle 11g,但我希望有一种标准的SQL方法.

What's the best way to query for this? I'm using Oracle 11g if that matters, but I'm hoping for a standard SQL method.

推荐答案

您可以使用EXISTS或IN子查询:

SELECT * FROM MOVIES m WHERE EXISTS ( SELECT * FROM ACTORS a WHERE a.MovieId = m.MovieId AND a.ActorName IN ('Tom Hanks', 'Russell Crowe', 'Arnold Schwarzenegger') )

SELECT * FROM MOVIES m WHERE m.MovieId IN ( SELECT a.MovieId FROM ACTORS a WHERE a.ActorName IN ('Tom Hanks', 'Russell Crowe', 'Arnold Schwarzenegger') )

更多推荐

SQL查询以查找具有至少一个指定值的行

本文发布于:2023-10-23 19:43:20,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1521826.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:SQL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!