2017-05-15 63 views
0

在MySql中,我使用了两个IN运算符,但我得到的输出是错误的。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

这个查询提供了无与伦比的结果的输出,但子查询给出正确的答案。

+0

db模式和值:*必填* –

+0

*“我也没有看过这种类型的错误”* - 正确* * –

+3

如果表格是相关的,则使用'JOIN'。 –

回答

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子句较慢。

+0

谢谢你,先生,我没有想到这一点。 – user2545174