选择具有不同放置的可能组合的字段值

时间:2015-01-09 15:18:32

标签: php mysql sql select

我想在包含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 OR和OR,它必须效率不高。

谢谢

2 个答案:

答案 0 :(得分:3)

您可以使用field 功能使您的查询比仅仅andor一样简单:

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

答案 1 :(得分: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%'

更新