制作一个具有"唯一"值取决于另一列

时间:2016-04-19 20:50:14

标签: sql relational-database

我们说这个简单的表叫做#34;字符":

realm_id | character_name | xp
---------|----------------|----------
       1 |     "mike"     | 10
       1 |     "lara"     | 25
       2 |     "mike"     | 40

我想要做的是根据realm_id拥有唯一名称。因此,例如,虽然允许两个"mikes" 不同 realm_id,但允许有两个{{ 1}}在同一个"mikes"内。这可能吗?

2 个答案:

答案 0 :(得分:0)

如果您正在寻找对此数据执行SELECT语句,那么您将寻找类似这样的事情(假设最高XP获胜);

SELECT
realm_id
character_name
MAX(XP) AS XP
FROM characters

但是,如果您希望表首先不允许重复,那么您最好考虑将realm_id和character_name作为复合主键。这将首先阻止您的重复发生,尽管您必须考虑当有人试图插入该副本时会发生什么,它会引发错误。

答案 1 :(得分:0)

在表上创建一个由realm_id和character_name组成的主键。主键将跨域和字符强制表中的唯一性。因此,您可以拥有realm_id = 1,character_name =' Mike'和realm_id = 2,character_name =' Mike',但是如果你试图插入realm_id = 1和character_name =' Mike'再次,插入失败。你的独特性是有保障的。