2011-02-28 156 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)" 
相關問題