2015-01-09 73 views
3

我想選擇包含item1,2,3,4,5的不同可能組合中字段的值。放置物品的位置並不重要,但每個字段都必須包含每個物品。選擇具有不同放置可能組合的字段值

id_num field1  field2 field3 field4 field5 
    1  item1  item2 item3 item4  item5 > true 
    2  item3  item3 item3 item4  item5 > false 
    3  item2  item1 item3 item4  item5 > true 
    4  item5  item4 item3 item2  item1 > true 
    5  item1  item1 item3 item4  item5 > false 
    6  item2  item2 item4 item4  item5 > false 

我嘗試使用常規查詢SELECT * from tb_name where field1=item1 AND field2=item2 etc...必須消耗非常多或OR,AND,OR,它必須是不是很有效。

謝謝

回答

3

可以使用field功能,使您的查詢不僅僅是一堆and S和or小號稍微簡單:

SELECT * 
FROM tb_name 
WHERE FIELD ('item1', field1, field2, field3, field4, field5) > 0 AND 
     FIELD ('item2', field1, field2, field3, field4, field5) > 0 AND 
     FIELD ('item3', field1, field2, field3, field4, field5) > 0 AND 
     FIELD ('item4', field1, field2, field3, field4, field5) > 0 AND 
     FIELD ('item5', field1, field2, field3, field4, field5) > 0 
+0

哇,我不知道mysql有這樣的功能,非常感謝你的快速和有用的回覆! –

2

嘗試使用CONCAT和像

select concat(field1,field2,field3,field4,field5) as checkstring,item_id from table where 
concat(field1,field2,field3,field4,field5) like '%item1%' 
and concat(field1,field2,field3,field4,field5) like '%item2%' 
and concat(field1,field2,field3,field4,field5) like '%item3%' 
and concat(field1,field2,field3,field4,field5) like '%item4%' 
and concat(field1,field2,field3,field4,field5) like '%item5%' 

已更新。

+0

你好,我不知道它出現了一些錯誤或MySQL 4不支持它顯示錯誤: SELECT CONCAT(field1,field2,field3,field4,field5)checkstring,* FROM tb_check WHERE checkstring LIKE'%item1%' 結果: 錯誤代碼:1064 您的SQL語法錯誤。檢查與您的MySQL服務器版本相對應的手冊,以在第1行 –

+0

處的checkstring LIKE'%item1%'的tb_check附近使用'*'。現在我也可以實現搜索功能,謝謝史蒂夫! –

相關問題