SQLServer中如何获取没有重复的记录,记录中字段有text,或image数据类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLServer中如何获取没有重复的记录,记录中字段有text,或image数据类型相关的知识,希望对你有一定的参考价值。

不能以 DISTINCT 方式选择 text、ntext 或 image 数据类型
不用DISTINCT ,还有什么方法?

查询并显示SignsRoadcost不重复的数据

1、表中有IDENTITY 属性字段
假设其IDENTITY 属性字段字段为id
select a.* into # from tb_Allocations a
select * from # a where id in(select min(id) as id from # b
where a. SignsRoadcost=b. SignsRoadcost)

2、表中没有IDENTITY 属性字段
select a.*,id=identity(int,1,1) into # from tb_Allocations a
select * from # a where id in(select min(id) as id from # b
where a. SignsRoadcost=b. SignsRoadcost)
参考技术A http://zhidao.baidu.com/question/104013793.html

这里是我之前回答别人的。。
要求和你比较类似。。你可以去看看这个

如何获取MYSQL分层数据中的所有子记录[重复]

【中文标题】如何获取MYSQL分层数据中的所有子记录[重复]【英文标题】:How to get all children records in MYSQL hierarchical data [duplicate] 【发布时间】:2017-11-20 03:16:52 【问题描述】:

我有一个包含以下列的表格

id   |    parent_customer_id
-----------------------------
1    |    0
2    |    0
3    |    1
4    |    2
5    |    4
6    |    4

我想要一个可以返回某个客户的所有子 ID 的脚本。例如

get_child_ids (1) = 1,3
get_child_ids(2) = 2,4,5,6
get_child_ids(3) = 3
get_child_ids(4) = 4,5,6
get_child_ids(5) = 5
get_child_ids(6) = 6

有些 id 的深度可以达到 10 级。我在https://explainextended.com/2009/07/20/hierarchical-data-in-mysql-parents-and-children-in-one-query/ 找到了获取父 ID 的绝佳解决方案,但我无法获取孩子

【问题讨论】:

什么麻烦? id 的数据与您共享的示例数据中的其他 id 不同。 【参考方案1】:

最好的解决方案是“使用 CTE 语法编写递归 SQL 查询”,但直到 MySQL 8.0.1 才支持。

递归 CTE 语法是标准 SQL,所有流行品牌的 SQL 兼容产品都支持它,现在 MySQL 支持它。

我在 2017 年 4 月的 Percona Live Conference 上介绍了 MySQL 中即将推出的递归查询功能:Recursive Query Throwdown in MySQL 8。

WITH RECURSIVE MyCTE AS (
  SELECT id, parent_customer_id FROM MyTable WHERE id = ?
  UNION
  SELECT id, parent_customer_id FROM MyTable JOIN MyCTE 
    ON MyTable.parent_customer_id = MyCTE.id
)
SELECT * FROM MyCTE;

如果您不能使用 MySQL 8.0.1 或更高版本,您可以使用 ExplainExtended 中的巧妙解决方案,或者您可以以其他方式存储分层数据以支持非递归查询。

我在我的演示文稿Models for hierarchical data 或我对What is the most efficient/elegant way to parse a flat table into a tree? 的回答中展示了一些解决方案。

我还在我的书SQL Antipatterns: Avoiding the Pitfalls of Database Programming中写了一个章节。

【讨论】:

【参考方案2】:

您必须查看以下关于Managing Hierarchical Data in MySQL

的文章

这是一篇出色的文章,向您展示了如何处理具有“无限”深度的分层数据的绝妙技术。

注意事项:如果您正在处理孩子有唯一父母的分层数据,那么这对您来说是一个很好的解决方案。但是,如果您正在处理具有多个父级的子代,那么您正在处理的是图表,因此,MySQL 不适合您。您必须改为以Neo4J 的身份探索解决方案

【讨论】:

以上是关于SQLServer中如何获取没有重复的记录,记录中字段有text,或image数据类型的主要内容,如果未能解决你的问题,请参考以下文章

oracle 如何返回多条记录

设置主键`id`

sql中如何删除一个表中重复的记录?

sql数据库中出现重复行数据,如何删除这些重复记录?

sqlserver利用存储过程去除重复行的sql语句

如何获取在 SQL 中具有重复列组合的记录? [复制]