mysql搜索具有相同列值的多个值

时间:2012-08-06 22:43:00

标签: mysql

编写更准确的问题:
 我有一个表:id,supplierCode,propertyCode,规范。在搜索产品时,我希望得到的产品规格有像value1和value2这样的文本,所以为了得到这些产品我想要一个像这样的查询:
SELECT * FROM tbl WHERE (specification LIKE '%value1%' OR specification LIKE '%value2%') AND (those 2 got rows has the same supplierCode)
或者从问题的另一方面:获取所有supplierCode,其中具有相同supplierCode的行在规范列中具有LIKE'%value1%'和LIKE'%value2%' 例如:
id supplierCode propertyCode,specification
1 001234 11 i7-blabla
2 001234 13 15.3“
3 004321 15 i7-9761
4 004321 16 15.4“
5 003214 14 i7-15.3“

如果我正在搜索'i7'和'15 .3''我可以获得001234和003214因为他们的规格中有i7和15.3“

5 个答案:

答案 0 :(得分:1)

你可以使用IN子句 - 肯定会更多地研究这个问题,你肯定会在网络的某个地方找到解决方案。

    SELECT * FROM tbl 
    WHERE specification IN ('value1', 'value2')
      AND propertyCode = 'SOME_VALUE'

答案 1 :(得分:0)

使用LIKE代替= sign

SELECT * 
FROM tbl 
WHERE (
       specification LIKE CONCAT('%', value1, '%') OR 
       specification LIKE CONCAT('%', value2, '%') 
      ) AND 
      propertyCode = valueHere

但是如果您确定使用规范值,请使用IN而不是OR(实际上它们是相同的)

SELECT * 
FROM tbl 
WHERE  specification IN ('value1','value2') AND 
       propertyCode = valueHere

答案 2 :(得分:0)

您可以使用关键字

pattern matching

答案 3 :(得分:0)

 SELECT * FROM tbl 
 WHERE (specification='%value1%' OR specification='%value2%') 
 group by propertyCode     

答案 4 :(得分:0)

$find = mysql_query("SELECT * FROM `tbl` WHERE (`specification` LIKE '%$value1%' OR `specification` LIKE '%$value2%') AND `propertyCode`='$propertycode'")or die(mysql_error());
$display = mysql_fetch_array($find);

请记住,您需要更改PHP变量,因为您没有包含任何我必须假设您正在寻找上述内容。

此外,如果您要创建列表,则需要在获取时使用while语句。