2016-10-06 57 views
0

我的數據庫結構看起來如下: 數據庫名稱:產品MySQL的 - 在多個表上使用FIND_IN_SET有沒有關係

id ptype 
1 Cups 
2 Shirts 
3 Cups 
4 Mugs 
5 Fabric 
6 Mat 

數據庫名稱:分類

id category ptype 
1 Clothes Pants, Shirts, Tshirts 
2 Other Mugs, Cups 

我希望得到一個列表的不同ptype(產品表),它們尚未在p類別中列出表

所以結果將是

ptype 
Fabric 
Mat 

我試着用下面的mysql選擇查詢,但它似乎沒有工作

SELECT p.ptype, c.ptype, FIND_IN_SET(p.ptype,c.ptype) FROM products as p, categories as c WHERE FIND_IN_SET(p.ptype,c.ptype) < 1 

它的產品表的所有ptypes返回FIND_IN_SET的價值爲0。

+0

在類別表的ptype字段中的逗號後面是否有空格? – Shadow

+0

啊謝謝你指出是的,我確實有空格後面的逗號不應該在那裏。解決問題也可以解決。在回答中張貼這個,我將接受它作爲問題的解決方案。再次感謝 –

回答

1

刪除categories.ptype字段中的逗號後面的空格以使查詢有效。 find_in_set()將針與逗號分隔值列表進行比較,並將逗號後面的空格視爲它搜索的字符串的一部分,因此,如果搜索不包含空格的字符串,則不會找到匹配項。