MySQL:唯一分组

时间:2014-03-16 15:51:30

标签: php mysql group-by unique

我在设计数据库时遇到问题而且我不知道如何解决它:

我有下表(相关专栏):

CREATE TABLE IF NOT EXISTS `prmgmt_tasks` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(300) NOT NULL,
  `project_id` int(11) NOT NULL,
);

我想要的是:每个任务都有一个唯一的ID(自动增量)。任务的名称不是唯一的,但对于每个项目它应该是唯一的。例如"设计用户界面"可以出现在id为1和2的项目中,但在id为1的项目中不会出现两次。对于“group by project_id'。”这样的东西是唯一的。

当然,我可以在每个查询中检查一下,但我正在寻找一种在数据库中对此进行建模的方法,因此无论执行什么查询,它都会保持一致。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

在组合字段上创建唯一的复合索引。

CREATE UNIQUE INDEX tasks_name_project
ON prmgmt_tasks (name, project_id);