2012-08-06 99 views
0

編輯爲更準確的問題:
我有一個表: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%' AND LIKE '%值2%'
實施例:
ID supplierCode propertyCode,說明書
1 0I7-布拉布拉
2 0.3"
3 004321 15 i7-9761
4 004321 16 15.4「
5 003214 14 i7-15.3"mysql搜索具有相同列值的多個值

如果我在尋找 'I7' 和'15 0.3" 」我能得到0和003214 becouse他們擁有i7處理器以及其規格15.3"

+0

嘗試使用'LIKE'運營商的Google搜索 – Ulterior 2012-08-06 22:47:22

+0

當您使用'LIKE'時,只需要'%',而不是當您使用'='時。一個'IN'語句已經是一個更好的選擇,然後使用'OR'運算符 – arnoudhgz 2012-08-06 22:49:56

回答

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 
+0

他的問題是「AND(具有相同的propertyCode)」 – Razvan 2012-08-06 22:49:55

1

您可以使用IN子句 - 絕對可以研究更多的問題,您肯定會在網絡的某個地方找到解決方案。

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

ups,srry,我的意思是'LIKE'不是'=' – 2012-08-06 23:13:49

0
SELECT * FROM tbl 
WHERE (specification='%value1%' OR specification='%value2%') 
group by propertyCode  
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語句。