![]() |
1
4
好吧,这会给你带来相当糟糕的表现,但我认为它会起作用的
|
![]() |
2
3
使用临时表或表变量,并在其中选择一个不同的名称列表。然后使用该结构为每个不同的名称选择原始表中每个记录的前1个。 |
![]() |
3
3
如果可以使用临时表:
对于更大的表来说,这个解决方案是不可取的。 |
![]() |
4
2
|
![]() |
5
2
从中选择名称、街道、城市、州( 选择名称、街道、城市、州, 行_number()覆盖(按名称分区,按名称排序)为rn 从表中)作为t 其中Rn=1 |
![]() |
6
1
这是地狱般的丑陋,但听起来你的困境也是丑陋的…所以这里…
|
![]() |
7
1
临时表解决方案如下
|
![]() |
8
1
我认为这是基于光标的解决方案的一个很好的候选者。我用光标已经很久了,所以我不想写T-SQL,但我的想法是:
|
![]() |
9
0
考虑到你的限制,我认为你做不到。您可以提取这些字段的不同组合。但是如果有人用同一个地址拼写鲍勃和鲍伯,你会得到两个记录。[gigo]正确的做法是,任何分组(所有字段上的分组都不等于distinct)都将混合行。可惜的是,您没有每个客户的唯一标识符。 您可能能够将查询嵌套在一起,例如为每个名称选择前1个并将所有这些名称连接在一起。 |
![]() |
10
0
对上述内容稍作修改就可以了。
现在,如果你有相同的街道,这将不起作用,但其他信息是不同的(例如,打字错误)。 或者一个更完整的散列将包括所有字段(但对于性能而言,您可能有太多的字段):
|
![]() |
11
0
|
![]() |
12
0
还有另一种方式:
|
![]() |
13
0
|
![]() |
14
0
|
![]() |
sqlrobert · SQL-如何查找不包含特定字段值的一组记录 1 年前 |
![]() |
Nick Fleetwood · 调度语法的LINQ查询 2 年前 |
![]() |
Mateen Bagheri · 选择表的计数并选择其自身 2 年前 |
![]() |
Java · 使用交叉应用同时显示两列 2 年前 |