2011-02-28 152 views
2

语法正确吗?为什么这个MySQL查询只返回1个结果?

SELECT * 
    FROM productOptions 
WHERE productOptionsID IN ('1,2,3,4') 

我是否正确使用了IN,还是应该用逗号分隔值不同?

这之后是下面的代码:

$optionsresultsql= mysql_query($optionsquerysql) or die(mysql_error()); 

while($optionssql = mysql_fetch_array($optionsresultsql)) { 
    $optionNamesID = $optionssql["optionNamesID"]; 
    echo $optionNamesID; 
} 

结果只有一个被示出,即使有在DB 4个匹配。

回答

6

'1,2,3,4'是一个字符串,它被转换为int。 MySQL将字符串转换为整数,直到读取第一个非数字字符(在您的情况下为,)。

所以,

IN ('1,2,3,4') = IN (CAST('1,2,3,4' AS INT)) = IN (1) 

查询应该仅仅是:

productOptionsID IN (1,2,3,4) 
9

与INT查找处理时除去单蜱..

"SELECT * FROM productOptions WHERE productOptionsID IN (1,2,3,4)" 
相关问题