2010-04-18 61 views
0

假設我有一個字段'category',值爲'1 | 2 | 3'。我想在mysql中進行搜索,以便它將所有匹配我的搜索參數的行返回到類別的值中。 例如:在MySQl中的垂直行分隔值中查找行?

$cat_id = 1; 

SELECT * FROM `myTable` WHERE cat_id is equal or found in category with values '1|2|3'... 

像that..i不知道如何把它放在正確的SQL查詢。

任何想法?提前致謝。

+0

看起來你正在實現某種「記錄內的記錄」,繞過了DBMS的原始有用性。使用單獨的表格,或查看SET數據類型:http://dev.mysql.com/tech-resources/articles/mysql-set-datatype.html – janmoesen 2010-04-18 09:14:43

回答

1

那麼你可以使用MySQL特定的正則表達式運營商進行管理:

WHERE category RLIKE '(\\||^)'+cat_id+'(\\||$)' 

(假設MySQL的反斜槓被啓用,這是他們在默認情況下非標)

但是,這種查詢不是可索引的,它通常被認爲是非常糟糕的模式設計,以將多個數據點組合成一列。通常的解決方案是myTablecategory的連接表。

+0

我試過了,它對我來說工作得很好。現在是一個良好的開端...無論如何,謝謝。 – Trez 2010-04-18 10:49:24

0

這個必須是「category」,而不是field。

SELECT * from mytable, cattable, where cattable.id=1 and cattable.mid=mytable.id