MySQL IN运算符不工作

时间:2017-05-15 20:34:36

标签: php mysql

在MySql中我使用了两个IN运算符,但我得到的输出是错误的。

SELECT DISTINCT(sub_category),category FROM `courses_table` WHERE category IN (3,4)

this is the correct output

有了这个,我得到了正确的答案,但是当我使用它时,我得到了一些无法比拟的行,在看到这种类型的错误之前我也没有。

SELECT * FROM `sub_cat` 
WHERE cat_id IN (SELECT DISTINCT(sub_category) FROM `courses_table` WHERE category IN (3,4)) 
ORDER BY sub_value

this is unmatched result

此查询提供不匹配结果的输出,但子查询给出正确答案。

1 个答案:

答案 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)

正是因为你/每个都没有列categoryDistinct是一个分组函数,因此,您可以在subcategory, category子句中添加distinct,也可以在第一个选择中添加group by子句。

另一方面,正如其他用户所说,您可以使用INNER JOIN子句并将WHERE子句添加到该INNER。此外,如果您始终使用类别3和类别4,请使用diferente clasue。条款IN较慢。