首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MySQL中使用关键字IN OR对3个表进行内部连接?

如何在MySQL中使用关键字IN OR对3个表进行内部连接?
EN

Stack Overflow用户
提问于 2012-10-13 12:28:57
回答 2查看 108关注 0票数 1

如何正确使用此IN OR select语句?(除了where bdt.active='yes'之外,所有东西都可以正常工作)

代码语言:javascript
复制
SELECT bdt.*, specials.*, stars.* 
FROM bdt INNER JOIN specials ON  bdt.id = specials.id 
         INNER JOIN stars ON specials.id=stars.id 
   WHERE bdt.active='yes' 
   AND  bdt.business_type IN ('entertainment') 
    OR  bdt.business_subtype IN  ('entertainment')  
    OR  bdt.subtype2 IN ('entertainment') 
    OR  specials.type IN ('entertainment')
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-13 12:32:47

您只需要在第二个AND条件中使用括号(),如下所示:

代码语言:javascript
复制
SELECT bdt.*, specials.*, stars.* 
FROM bdt INNER JOIN specials ON  bdt.id = specials.id 
         INNER JOIN stars ON specials.id=stars.id 
   WHERE bdt.active='yes' 
   AND (bdt.business_type IN ('entertainment') 
    OR  bdt.business_subtype IN  ('entertainment')  
    OR  bdt.subtype2 IN ('entertainment') 
    OR  specials.type IN ('entertainment'))
票数 1
EN

Stack Overflow用户

发布于 2012-10-13 13:37:56

2关于风格的注意事项。

  1. 使用IN当你有多个选择时,使用=作为单一的直接a是非常糟糕的形式。从您的连接可以明显看出,每个表都有一个id字段。您将只想列出所需的列,并以不同的方式为同名列取别名。

下面我还将展示如何正确地使用IN重写OR子句。

代码语言:javascript
复制
SELECT bdt.*, specials.*, stars.* 
FROM bdt INNER JOIN specials ON  bdt.id = specials.id 
         INNER JOIN stars ON specials.id=stars.id 
   WHERE bdt.active='yes' 
   AND  'entertainment' IN (bdt.business_type, bdt.business_subtype,
                            bdt.subtype2, specials.type)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12869942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档