我有這樣的場景,我的MySQL數據庫: 選擇列,其中值列有多個數據分離逗號
我需要選擇行,其中標籤是用PHP-MySQL查詢URL參數(GET):
$tag = $_GET['tag'];
// example $tag = 1
// now I need select rows where in tags colums is value 1.
如何獲取此查詢?我認爲我需要創建一個數組...但我不知道該怎麼做。提前致謝!
我有這樣的場景,我的MySQL數據庫: 選擇列,其中值列有多個數據分離逗號
我需要選擇行,其中標籤是用PHP-MySQL查詢URL參數(GET):
$tag = $_GET['tag'];
// example $tag = 1
// now I need select rows where in tags colums is value 1.
如何獲取此查詢?我認爲我需要創建一個數組...但我不知道該怎麼做。提前致謝!
不要這樣做 - 它會在每次查詢之前爲您造成麻煩,直到您修復它爲止。
相反,使標籤表,並使用許多一對多的關係,團隊的標籤聯繫起來。
例如
CREATE TABLE tag (
id int not null auto_increment primary key,
name varchar(100),
description varchar(255));
CREATE TABLE teamtag (
team_id int,
tag_id int,
CONSTRAINT 'team_fk' FOREIGN KEY (team_id) REFERENCES team ('id'),
CONSTRAINT 'tag_fk' FOREIGN KEY (tag_id) REFERENCES tag ('id'));
而且使'team_id'用'tag_id'作爲主鍵。 –
是的,完全是@ElonThan。接得好。 –
你可以使用LIKE
/FIND_IN_SET
這樣做,但你絕對不應該這樣做。
而是考慮改變架構和加入字典表,以保持所有的標籤和連接表,以保持標籤和項目之間的所有連接。
SELECT * FROM `table` WHERE FIND_IN_SET(`Tags`, '$tag') > 0;
最好的辦法是你一定要規範你的數據庫;否則[FIND_IN_SET()](http://dev.mysql.com/doc/refman/5.6/en/string-functions.html#function_find-in-set) –
你是什麼意思的規範化我的數據庫?你能舉個例子嗎? –
我的意思是使用team_tags表,包括TEAM_ID和TAG_ID列,一個行,並與您的團隊相關聯的每個標籤 - 按d Mac的答案 –