首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL -在一列上选择DISTINCT

SQL -在一列上选择DISTINCT
EN

Stack Overflow用户
提问于 2018-11-02 05:25:27
回答 4查看 398关注 0票数 1

我有一张像这样的桌子

代码语言:javascript
复制
  ID  NAME     TL_NUM    TL_NAME      MANAGER_NUM
  ===============================================
  1   F-23      2         T-2         1
  2   B-23      3         T-3         2
  3   F-24      2         T-2         1
  4   F-25      1         T-1         2
  5   F-26      2         T-2         2 
  6   F-27      1         T-1         2

现在,我想要获得如下结果集

代码语言:javascript
复制
  TL_NUM    TL_NAME    MANAGER_NUM
  ================================
  2         T-2         1
  3         T-3         2
  1         T-1         2
  2         T-2         2 

我尝试使用以下查询

代码语言:javascript
复制
   select DISTINCT TL_NUM, TL_NAME,MANAGER_NUM
   from dataTable

当使用这个查询而不是上面的查询时,它给了我一个正确的结果集:

代码语言:javascript
复制
  select DISTINCT TL_NUM, TL_NAME
   from dataTable

但是它没有在我的结果集中返回正确的'MANAGER_NUM‘。谁能让我知道确切的问题是什么,我相信是因为DISTINCT?

EN

回答 4

Stack Overflow用户

发布于 2018-11-02 23:19:00

您的查询看起来很好,工作正常,但根据输出结果排序不正确。我已经测试了该查询,它工作正常。

代码语言:javascript
复制
select DISTINCT TL_NUM, TL_NAME ,MANAGER_NUM from #dataTable order by MANAGER_NUM
票数 1
EN

Stack Overflow用户

发布于 2018-11-02 05:35:05

经过测试,它确实返回了正确的值-您是否正确地查看了这些值?以下是用于创建表的工作版本的测试脚本:

代码语言:javascript
复制
CREATE TABLE #dataTable (id int identity, Name varchar(10), TL_NUM smallint, TL_NAME varchar(10), MANAGER_NUM smallint)
INSERT INTO #datatable (Name, TL_NUM, TL_NAME, MANAGER_NUM)
VALUES 
     ('F-23',      2,         'T-2',         1),
     ('B-23',      3,         'T-3',         2),
     ('F-24',      2,         'T-2',         1),
     ('F-25',      1,         'T-1',         2),
     ('F-26',      2,         'T-2',         2),
     ('F-27',      1,         'T-1',         2)

然后我使用了你的查询:

代码语言:javascript
复制
select DISTINCT TL_NUM, TL_NAME ,MANAGER_NUM
from #dataTable

并设置了以下返回值:

代码语言:javascript
复制
---------------------------------
|TL_NUM |TL_NAME    |MANAGER_NUM|
---------------------------------
|1      |T-1        |2          |
|2      |T-2        |1          |
|2      |T-2        |2          |
|3      |T-3        |2          |
---------------------------------

主要区别在于返回行的顺序,但返回的行具有正确的值。

票数 0
EN

Stack Overflow用户

发布于 2018-11-02 14:23:56

看看我下面的小提琴:

代码语言:javascript
复制
DECLARE @tmp TABLE ( ID INT,NAME NVARCHAR(100),TL_NUM INT,TL_NAME NVARCHAR(100),MANAGER_NUM INT)

INSERT INTO @tmp
VALUES
(1, 'F-23', 2, 'T-2', 1)
,(2, 'B-23', 3, 'T-3', 2)
,(3, 'F-24', 2, 'T-2', 1)
,(4, 'F-25', 1, 'T-1', 2)
,(5, 'F-26', 2, 'T-2', 2)
,(6, 'F-27', 1, 'T-1', 2)

SELECT   DISTINCT t.TL_NUM ,t.TL_NAME ,t.MANAGER_NUM 
FROM     @tmp AS t
ORDER BY t.MANAGER_NUM
        ,t.TL_NAME DESC
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53109573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档