MySQL 检查一组属性的唯一性?
MySQL check for uniqueness of a set of attributes?
我想做的是,我需要执行唯一性验证。但是,我不是简单地检查 “数据库中是否已经存在名称 iggy?”。我需要检查一组属性的唯一性。
这就是我所说的检查一组属性的唯一性的意思。假设我需要检查列/属性的唯一性:type
、partNum
和 name
。我需要检查一行的 type
、partNum
和 name
是否唯一。
- 如果我发现两行具有相同的
type
和 name
但它们具有不同的 partNum
,则它们被认为是唯一的。
- 如果我发现两行具有相同的
type
但它们具有不同的 name
和 partNum
,则它们被认为是唯一的。
- 如果我找到具有相同
type
、name
和 partNum
的两行,它们不是唯一的。
id type partNum name
-----------------------
1 A partA nameA # assume this exists
2 A partA nameB # unique
3 A partB nameA # unique
4 B partA nameA # unique
5 A partA nameA # NOT unique b/c type, partNum, and name match with 1
什么是比较 type
、partNum
和 name
列的属性集的好策略/MySQL 代码?
DISTINCT方法:
SELECT DISTINCT
type, partNum, name
FROM mytable;
GROUP BY方法:
SELECT type, partNum, name
FROM mytable
GROUP BY type, partNum, name;
GROUP BY
与GROUP_CONCAT的做法,如果要查看id
的列表是否具有相同的唯一性:
SELECT GROUP_CONCAT(id) AS ids, type, partNum, name
FROM mytable
GROUP BY type, partNum, name;
我想做的是,我需要执行唯一性验证。但是,我不是简单地检查 “数据库中是否已经存在名称 iggy?”。我需要检查一组属性的唯一性。
这就是我所说的检查一组属性的唯一性的意思。假设我需要检查列/属性的唯一性:type
、partNum
和 name
。我需要检查一行的 type
、partNum
和 name
是否唯一。
- 如果我发现两行具有相同的
type
和name
但它们具有不同的partNum
,则它们被认为是唯一的。 - 如果我发现两行具有相同的
type
但它们具有不同的name
和partNum
,则它们被认为是唯一的。 - 如果我找到具有相同
type
、name
和partNum
的两行,它们不是唯一的。
id type partNum name
-----------------------
1 A partA nameA # assume this exists
2 A partA nameB # unique
3 A partB nameA # unique
4 B partA nameA # unique
5 A partA nameA # NOT unique b/c type, partNum, and name match with 1
什么是比较 type
、partNum
和 name
列的属性集的好策略/MySQL 代码?
DISTINCT方法:
SELECT DISTINCT
type, partNum, name
FROM mytable;
GROUP BY方法:
SELECT type, partNum, name
FROM mytable
GROUP BY type, partNum, name;
GROUP BY
与GROUP_CONCAT的做法,如果要查看id
的列表是否具有相同的唯一性:
SELECT GROUP_CONCAT(id) AS ids, type, partNum, name
FROM mytable
GROUP BY type, partNum, name;