如何查询与演员表姓名匹配的租赁客户信息
解决方案:找出与演员同名的租赁客户
嘿,我来帮你搞定这个查询需求。首先咱们明确核心目标:从有租赁记录的客户里,找出那些和演员表中名、姓完全一致的人。
方法一:基于你原有的查询逻辑扩展
你已经写出了获取租赁客户姓名的基础查询,我们可以把这个结果作为临时表,再和actors表做关联匹配:
SELECT DISTINCT rental_customers.first_name, rental_customers.last_name FROM ( -- 你原有的查询:获取所有客户姓名,后续过滤出有租赁记录的 SELECT customers.first_name, customers.last_name FROM customers LEFT JOIN rentals ON customers.customer_id = rentals.customer_id -- 过滤掉从未租赁过的客户 WHERE rentals.customer_id IS NOT NULL ) AS rental_customers -- 关联演员表,匹配名和姓完全一致的记录 JOIN actors ON rental_customers.first_name = actors.first_name AND rental_customers.last_name = actors.last_name;
方法二:更简洁的多表直接关联
其实我们可以跳过子查询,直接把三个表连接起来,逻辑更清晰高效:
SELECT DISTINCT c.first_name, c.last_name FROM customers c -- 用INNER JOIN直接只保留有租赁记录的客户 INNER JOIN rentals r ON c.customer_id = r.customer_id -- 关联演员表,同时匹配名和姓的组合 INNER JOIN actors a ON c.first_name = a.first_name AND c.last_name = a.last_name;
关键细节说明
- 用
INNER JOIN rentals替代原查询的LEFT JOIN,是因为我们只需要有过租赁行为的客户,这样能直接过滤掉从未租赁过的客户,比子查询加WHERE更高效。 - 加上
DISTINCT是为了避免同一个客户多次租赁影片时,姓名被重复输出。 - 必须同时匹配
first_name和last_name,确保是完全同名的记录,避免只匹配名或只匹配姓导致的误判。
内容的提问来源于stack exchange,提问作者Angel
相关产品推荐
相关产品推荐

