我有一个MySQL数据库表,其中有两列我感兴趣.它们各自可以有重复项,但它们永远不应该有两个值相同的重复项.

stone_id可以有副本,只要每个upsharge标题不同,反之亦然.但假设stone_id=412和upcharge_title="sapphire"这样的组合只发生一次.

这没关系:

stone_id = 412 upcharge_title = "sapphire"
stone_id = 412 upcharge_title = "ruby"

这不好:

stone_id = 412 upcharge_title = "sapphire"
stone_id = 412 upcharge_title = "sapphire"

是否有在两个字段中都能找到重复项的查询?如果可能的话,有没有办法将我的数据库设置为不允许这样做?

我使用的是MySQL版本4.1.22

推荐答案

您应该在这两个字段之间设置一个复合键.这将要求每行有一个唯一的stone_id和upcharge_标题.

要找到现有的副本,请try 以下方法:

select   stone_id,
         upcharge_title,
         count(*)
from     your_table
group by stone_id,
         upcharge_title
having   count(*) > 1

Mysql相关问答推荐

'mySQL中的操作员

基于多行从表中 Select

从insert语句获取新生成的虚拟UUID

为什么 MAX 函数通过调用在 group 中生成正确的结果

Mysql - Select 匹配某些条件的两条记录之间经过的最大天数

如果存在N个特殊行,如何 Select 它们,其余的必须填充常规行,总行数不能超过MySQL中的X行?

如何计算具有权重属性的记录数

MySQL 可以用于将列表排序为三分之三吗?

如何优化使用多个 LEFT JOIN 和 GROUP BY 子句的慢速 MySQL 查询?

MYSQL 删除两个已知字符串之间的字符串

访问 nodejs、mysql 和 json 中的嵌套对象数组

使用数据表的直方图(SQL 查询)

mySQL 中的主数据库和 IF 错误?

如何在 SQL 中的一行中查找最小值和最大值?

不是唯一的表/别名

MySQL触发器在某些条件下防止INSERT

MySQL SELECT 增量计数器

MySQL如何为数据库中的所有表生成DDL

MySQL与空值比较

将mysql查询输出存储到shell变量中