0

编辑更准确的问题:
我有一个表:id、supplierCode、propertyCode、specification。在产品中进行搜索时,我想获得规格具有像 value1 和 value2 这样的文本的产品,所以要获得这些产品,我想要一个类似这样的查询:
SELECT * FROM tbl WHERE (specification LIKE '%value1%' OR specification LIKE '%value2%') AND (those 2 got rows has the same supplierCode)
或者从问题的另一端:获取所有供应商代码的行供应商代码在规范列中有 LIKE '%value1%' AND 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"

4

5 回答 5

1

您可以使用 IN 子句——一定要多研究一下这个问题,您肯定会在网络的某个地方找到解决方案。

    SELECT * FROM tbl 
    WHERE specification IN ('value1', 'value2')
      AND propertyCode = 'SOME_VALUE'
于 2012-08-06T22:50:30.087 回答
0

你可以使用like关键字

模式匹配

于 2012-08-06T22:52:30.107 回答
0
 SELECT * FROM tbl 
 WHERE (specification='%value1%' OR specification='%value2%') 
 group by propertyCode     
于 2012-08-06T22:53:00.997 回答
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 变量,因为您没有包含任何我必须假设您正在寻找类似上述内容的内容。

此外,如果您要创建一个列表,那么您将需要在您的 fetch 上使用 while 语句。

于 2012-08-06T22:54:15.877 回答
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
于 2012-08-06T22:48:46.470 回答