2011-08-20 54 views
1

我有一個遊戲的數據庫,其中有一個類型字段,裏面有逗號分隔的唯一ID。這是一個文本字段。例如:HALO 2 - cat_genre => '1,2' (Action,Sci-Fi)在MySQL中以逗號分隔的文本字段中查找值?

我試圖做一個函數來計算該類型的遊戲總數。所以它將1值與db中用逗號分隔的多個值相匹配。

我正在使用SELECT * FROM gh_game WHERE cat_genre IN (1)哪個可以找到動作遊戲。

我試圖解決這個問題,我以爲我曾經釘過一次,但我無法弄清楚。

+7

問題是首先缺少db標準化;應該有一個遊戲編號和貓編號的流派表,每個編號編號爲 – 2011-08-20 05:14:57

+1

而不是使數據庫方案複雜化,你可以經常使用FIND_IN_SET() - 儘管這可能會導致性能下降。 – mario

+1

我之前使用過這種方法......但它只能作爲單向操作而不會破壞性能和可維護性。既然你試圖進行雙向查找(查看錶格而不是隻是查看),Dagon就是正確的,你需要把它分成一個新表格。 –

回答

1

您需要創建多對多關係。像這樣

CREATE TABLE gameGenreTable (id int NOT NULL PRIMARY KEY, genreID, gameID) 

編輯:如果你使用的是InnoDB,您還可以創建genreID和遊戲ID .. 外鍵我想補充的genreID唯一鍵,遊戲ID

那麼你可以做一個查詢這樣

SELECT genreID,count(genreID) as count from gameGenreTable GROUP BY genreID; 

- 並加入您的其他表,以獲得流派名稱(或只使用ID)。

相關問題