mysql之最高效的 MySQL(面试查询)

linjiqin 阅读:21 2023-08-22 18:30:54 评论:0

最近在面试中遇到了以下问题:

我有一个包含下表的数据库(为了这个例子,我们假设这些表是有意义的):

  • 用户(id,姓名,cc_id)
  • 信用卡(id)
  • 电影(id,名字)
  • 购买(movie_id,cc_id)

我想找到购买了电影《黑暗骑士》的顾客的姓名。

我的回答是:

SELECT name FROM User AS u 
    INNER JOIN CreditCard AS cc ON u.id = cc.id 
    INNER JOIN Purchase AS p ON p.movie_id =  
        (SELECT id FROM Movie AS m WHERE m.name = "Dark Knight") AND cc.id = p.cc_id 

撇开语法不谈,我想知道这是否是解决此问题的更有效的方法。

请您参考如下方法:

最好也加入movie表而不加入creditcard

SELECT u.name  
FROM `User` AS u 
INNER JOIN Purchase AS p ON p.cc_id = u.cc_id 
INNER JOIN movie m on p.movie_id = m.id 
WHERE m.name = 'Dark Knight' 


标签:面试
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号