2014-07-20 70 views
0

我一直在使用下面的查詢:後4個成功匹配MySQL查詢與WHERE IF和FIND_IN_SET()函數

"SELECT * FROM mytable WHERE IF(FIND_IN_SET(column1,'$searchString') > 0,1,0) 
+ IF(FIND_IN_SET(column2, '$searchString') > 0, 1, 0) 
+ IF(FIND_IN_SET(column3, '$searchString') > 0, 1, 0)+ 
IF(FIND_IN_SET(column4, '$searchString') > 0, 1, 0) > 0"; 

所以(萬一),做的查詢就會變成以下??:

"SELECT * FROM mytable WHERE 1+1+1+1 > 0"; 

請確保我的假設是否正確。提前致謝。

回答

0

是的,但你可以讓這個短

SELECT * FROM mytable 
WHERE 
(
    FIND_IN_SET(column1, '$searchString') > 0 + 
    FIND_IN_SET(column2, '$searchString') > 0 + 
    FIND_IN_SET(column3, '$searchString') > 0 + 
    FIND_IN_SET(column4, '$searchString') > 0 
) > 0 
+0

感謝,我猜當數據庫變大時,這個查詢會帶來更好的性能嗎? –

+0

比什麼更好的表現? –

+0

性能比我以前在 –

1

通常情況下,你會做這種類型的比較與or除非你想真的要算匹配:

SELECT * 
FROM mytable 
WHERE (FIND_IN_SET(column1, '$searchString') > 0 OR 
     FIND_IN_SET(column2, '$searchString') > 0 OR 
     FIND_IN_SET(column3, '$searchString') > 0 OR 
     FIND_IN_SET(column4, '$searchString') > 0 
    );