如何正确使用此IN OR select语句?(除了where bdt.active='yes'之外,所有东西都可以正常工作)
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')发布于 2012-10-13 12:32:47
您只需要在第二个AND条件中使用括号(),如下所示:
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'))发布于 2012-10-13 13:37:56
2关于风格的注意事项。
IN当你有多个选择时,使用=作为单一的直接a是非常糟糕的形式。从您的连接可以明显看出,每个表都有一个id字段。您将只想列出所需的列,并以不同的方式为同名列取别名。下面我还将展示如何正确地使用IN重写OR子句。
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)https://stackoverflow.com/questions/12869942
复制相似问题