在MySql中我使用了两个IN
运算符,但我得到的输出是错误的。
SELECT DISTINCT(sub_category),category FROM `courses_table` WHERE category IN (3,4)
有了这个,我得到了正确的答案,但是当我使用它时,我得到了一些无法比拟的行,在看到这种类型的错误之前我也没有。
SELECT * FROM `sub_cat`
WHERE cat_id IN (SELECT DISTINCT(sub_category) FROM `courses_table` WHERE category IN (3,4))
ORDER BY sub_value
此查询提供不匹配结果的输出,但子查询给出正确答案。
答案 0 :(得分:0)
嗯,你看,
此查询:
SELECT DISTINCT(sub_category),category FROM `courses_table` WHERE category IN (3,4)
不一样:
SELECT DISTINCT(sub_category) FROM `courses_table` WHERE category IN (3,4)
正是因为你/每个都没有列category
。 Distinct
是一个分组函数,因此,您可以在subcategory, category
子句中添加distinct
,也可以在第一个选择中添加group by
子句。
另一方面,正如其他用户所说,您可以使用INNER JOIN
子句并将WHERE
子句添加到该INNER。此外,如果您始终使用类别3和类别4,请使用diferente clasue。条款IN较慢。