我有这样的场景,我的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的答案 –