2016-11-22 94 views
0

MySql FIND_IN_SET搜索需要第一個參數,如一個字符串。使用FIND_IN_SET搜索時很少有項目MySql函數

但是如果我有幾個變量要在集合中查找呢?

SET field {set_field} can be => 1,2 OR 1,3 OR 1,2,3 OR 2,3 

論據爲search => array('1','2','3')

而且我不喜歡這樣想的寫條件:

FIND_IN_SET('1',{set_field}) OR FIND_IN_SET('2',{set_field}) OR FIND_IN_SET('3',{set_field}) 

是否有任何其他的選擇嗎?

+0

嘗試刪除單引號... –

+0

我不是說這不工作像我之前寫的,我試圖尋找其他的選擇,更緊湊,原因如果我將有40個agr搜索我將有40次FIND_IN_SET條件!也許有一些其他的選擇或功能來做到這一點 – scion4581

回答

0

您可以將值加載到臨時表中並根據FIND_IN_SET執行JOIN。

但不知道它是一個真正的優勢

CREATE TEMPORARY TABLE fred 
(
    ID INT, 
    PRIMARY KEY (`ID`) 
); 

INSERT INTO fred VALUES (1),(2),(3); 

SELECT DISTINCT a.* 
FROM some_table a 
INNER JOIN fred b 
ON FIND_IN_SET(b.ID, a.set_field);