问题标签 [unique]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
74623 浏览

sql - MySQL:选择 N 行,但在一列中只有唯一值

给定这个数据集:

我需要找到 3 个最年长的人,但每个城市只有一个。

如果它只是三个最古老的,那将是......

  • 亨利琼斯 / 芝加哥
  • 麦克泰勒/纽约
  • 埃贡斯宾格勒 / 纽约

然而,由于 Egon Spengler 和 Mac Taylor 都位于纽约,因此 Egon Spengler 将退出,而下一位(Sarah Connor / 洛杉矶)将进入。

任何优雅的解决方案?

更新:

目前,PConroy 的变体是最好/最快的解决方案:

他使用“IN”的原始查询对于大数据集非常慢(5 分钟后中止),但是将子查询移动到 JOIN 会大大加快速度。大约需要 0.15 秒。我的测试环境中有 1 个 mio 行。我有一个关于“城市,生日”的索引,而第二个索引是关于“生日”的。

注意:这与...有关

0 投票
5 回答
107918 浏览

sql - 如何在 NULL 列上创建唯一索引?

我正在使用 SQL Server 2005。我想将列中的值限制为唯一,同时允许 NULL。

我当前的解决方案涉及一个视图上的唯一索引,如下所示:

有更好的想法吗?

0 投票
4 回答
4258 浏览

sql-server - 在 SQL Server 中将唯一索引创建为“索引”或“约束”有什么区别?

在将要成为 UNIQUE(但不是表的主键)的列上创建索引时,SQL Server 让我选择几个选项:

1)我可以选择它是一个约束或索引。
我猜这意味着如果我将它设置为约束,它不会在查询时使用它,只有在写入时。但是,我能想到的让 SQL Server 强制执行该约束的唯一有效方法是实际构建索引。这个选项有什么用?

2)另外,如果我将它设置为“索引”,它让我指定它应该忽略重复的键。这对我来说是最令人费解的......
我再次猜测它意味着与约束相反。它可能意味着“在查询时使用它,但在写入时甚至不检查”。
但那我为什么要把它设置为 UNIQUE 呢?
我猜 SQL Server 可以做一些优化,但我想更好地理解它。

有谁知道 SQL Server 究竟对这些选项做了什么?
将索引设置为唯一但忽略重复键的用例是什么?

注意:这适用于 SQL Server 2000


编辑:根据你所说的,但是......如果我创建一个约束,它将用于加速使用约束中的字段进行过滤的查询?

谢谢!

0 投票
4 回答
2752 浏览

mysql - 如何在两个字段上创建“双面”唯一索引?

如何有效地在表中的两个字段上创建唯一索引,如下所示: create table t (a integer, b integer);

其中两个不同数字的任何唯一组合不能在表的同一行上出现多次。

换句话说,如果存在 a=1 和 b=2 的行,则不能存在 a=2 和 b=1 或 a=1 和 b=2 的另一行。换句话说,两个数字不能以任何顺序一起出现多次。

我不知道这样的约束被称为什么,因此标题中的“双面唯一索引”名称。

更新:如果我在列 (a,b) 上有一个复合键,并且数据库中存在一行 (1,2),则可以插入另一行 (2,1) 而不会出错。我正在寻找的是一种防止同一对数字以任何顺序多次使用的方法......

0 投票
1 回答
36148 浏览

sql - 如何使用 SQL 计算唯一记录并获取表中这些唯一记录的数量?

想象一下我有这样的表:

id:产品:shop_id

1:篮球:41

2:足球:41

3:火箭:45

4:汽车:86

5:平面:86

现在,这是一个大型互联网商城的例子,其中有商店向一个客户销售,因此客户可以从每个商店中选择更多产品并在一个篮子中购买。

但是,我不确定是否有任何 SQL 语法可以让我简单地获取唯一的 shop_ids 和客户购物篮中这些商店产品的总数。所以我会得到类似的东西:

41 号店有 2 件商品

购买 45 件商品

店铺 86 两款产品

我可以进行 SQL 查询以通过表舀出某种 ['shop_id']['number_of_products'] 数组变量来存储所有产品的 shop_id,然后“使它们唯一” - 向上计算我必须削减多少次还有一个 shop_id 有一些剩余,但这似乎是很多无用的脚本。

如果你有什么好主意,请告诉我。

0 投票
7 回答
3931 浏览

c# - C# 等效于 std::sort 和 std::unique

我在 C# 中有一个整数列表。我希望删除重复项。在 C++ 中,我将通过 std::sort 和 std::unique 算法运行它,以非常有效地获取唯一列表。

在 C# 中做同样事情的最佳方法是什么?换句话说,我正在寻找一种更优雅的方式来执行以下代码:

0 投票
7 回答
101172 浏览

sql-server - SQL Server - 如何插入记录并确保它是唯一的

我试图找出将记录插入单个表的最佳方法,但前提是该项目尚不存在。在这种情况下,KEY 是一个 NVARCHAR(400) 字段。对于这个例子,让我们假装它是牛津英语词典中的一个的名字/在这里插入你最喜欢的词典。另外,我猜我需要将 Word 字段设置为主键。(该表也将有一个唯一标识符 PK 也)。

所以..我可能会得到这些我需要添加到表中的词...

例如。

  • 酒吧
  • 皮尤
  • ETC...

所以传统上,我会尝试以下(伪代码)

IE。如果该词不存在,则插入它。

现在..我担心的问题是我们得到了很多点击..那么这个词是否有可能从另一个进程插入到 SELECT 和 INSERT 之间.. 然后会抛出一个约束错误? (即竞争条件)。

然后我认为我可能能够做到以下几点......

基本上,当它不存在时插入一个单词。

抛开语法错误不谈,我不确定这是好是坏,因为它如何锁定表(如果确实如此),并且在表上的性能不高,以至于它获得大量读取和大量写入。

那么 - 你的 Sql 大师认为/做什么?

我希望有一个简单的插入并“捕获”任何抛出的错误。

0 投票
3 回答
19993 浏览

c# - 使用 LinqToXml 使用过滤器选择唯一的 XElement(按属性)

我有一个类似于此的 XML 文档:

现在我想使用 linq 查询获取属于指定类别的所有唯一所有者(我实际上只需要所有者的属性值)。在我的示例中,对 cat 1 的查询将返回一个包含 9 和 14 的列表。我该怎么做?Linq 语法比 Lambda 更受欢迎。提前致谢 ;)

0 投票
3 回答
2992 浏览

msbuild - 规范化 MSBuild 中的项目列表

我正在尝试获取项目根目录下所有单元测试程序集的列表。我可以这样做:

但是,这将多次找到相同的 DLL,因为它们存在于多个子目录中。有没有一种简单的方法可以根据项目元数据(即文件名和扩展名)进行规范化,以便获得唯一的单元测试 DLL 列表?还是我必须求助于编写自己的任务?

0 投票
8 回答
3343 浏览

database - 我应该检查代码中的 DB 约束还是应该捕获 DB 抛出的异常

我有一个将数据保存到名为 Jobs 的表中的应用程序。Jobs 表有一个名为 Name 的列,它有一个 UNIQUE 约束。Name 列不是 PRIMARY KEY。我想知道在尝试保存/更新新条目之前是否应该自己检查重复条目,或者是否最好等待数据访问层抛出异常。如果它很重要,我正在为这个应用程序使用 NHibernate


感谢大家的大力投入。

我找到了另一个原因,为什么我应该在代码中进行验证,而不仅仅是等待抛出异常(并被我的代码捕获)。似乎 NHibernate 只会抛出一个 NHibernate.Exceptions.GenericADOException ,这对于这种情况下异常的原因并不是很丰富。还是我在这里错过了 NHibernate 的一个方面?