2014-02-18 56 views
0
CREATE TABLE `product` (
    `productId` int(10) unsigned NOT NULL auto_increment, 
    `productName` varchar(100) NOT NULL default '', 
    `hashTags` varchar(255) 
....... 
) 

我在hashTags列中的多個值在像11,12,13,14無法選擇包含多個值中的mysqli行

SELECT hashTags FROM `product` WHERE hashTags in (11,14); 

單個細胞當我嘗試此查詢它僅選擇列的第一個值是真正的查詢其相應的單元格,所以我如何繼續?

+------------+ 
| hashTags | 
+------------+ 
| 11,14,12,13| 
+------------+ 
| 13,14,15 | 
+------------+ 

我想要寫的查詢,其選擇含有14行作爲其hashTag

回答

1

首先,在一列中存儲多個值是BAD!請參閱database normalization

嘗試使用like操作:

SELECT hashTags 
FROM `product` 
WHERE hashTags like '%,14,%' 
    or hashTags like '%,14' 
    or hashTags like '14,%' 
    or hashTags like '14'. 

然而,這是不是最好的方式,以保持您的數據,它需要太多理論來形容這裏,但想法是:

創建存儲特定產品標籤,使用您的例子,假設你的產品除了HashTag(hashTagId, productId)表有ID爲1,以下行存儲在您的專欄主題標籤你有相同的信息。現在

HashTags 
-------- 
11 | 1 
12 | 1 
13 | 1 
14 | 1 

,查詢與標籤11和14使用特定產品的查詢,如:

SELECT productId, 
     productName, ... 
FROM Product, 
    HashTags 
WHERE HashTag.productId = Product.productId 
    AND HashTag.hashTagId = 14 
    OR hashTagId = 13. 

實際上查詢可能更加複雜,以確保產品既具有哈希標籤,但是這是基本的理念。請參閱第一行中的鏈接。

+0

當我執行像查詢它給出了含有114和144也結果這樣 – Swapnil

+0

如何維護對特定產品的多個散列標籤值? – Swapnil

+0

我改變了我的答案。現在試試。 – rendon