這裏是我的僞查詢:爲什麼num IN(「num1,num2」)在第一個逗號頂部?
SELECT col1, col2 FROM table WHERE number IN(number1,number2,number3);
例
SELECT name, description FROM products WHERE 5 IN(category_id);
注:讓我們假設在表中的行已CATEGORY_ID = 2,5,7
問題
我的查詢工作,如果該行在逗號分隔開始像「5」這樣:5,2,7 但如果行開始以非5以外的任何結果相同的查詢不會返回任何結果。
我試過了各種各樣的場景,在我看來,當mysql遇到逗號時,它不再檢查進一步進入逗號分隔數字的匹配。
我檢查了一切有意義的東西,如格式正確的逗號分隔字符串和整理。這一點讓我感到困惑。任何解決方案
請注意我使用FIND_IN_SET()
並且工作完美無瑕。但是,我仍然不滿意在不知道真正的問題是什麼的情況下開溜IN()
。爲什麼在第一次遇到逗號時停下來。
很好的使用微示例,我認爲它們是一個很好的方法來展示問題。 – user2864740 2014-09-29 02:18:43
+1,很好的解釋@ spencer7539 – radar 2014-09-29 02:31:14
謝謝比較操作的例子和詳細解釋。 – SpaceMonkey 2014-09-30 00:29:19