SQL中DISTINCT的位置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL中DISTINCT的位置相关的知识,希望对你有一定的参考价值。

2张表 DISTINCT 表名.列名 还是 表名.DISTINCT 列名

您好,很高兴为您解答!


    distinct 一般是放在select之后;


    如果是所有查询出来的都要distinct,直接在select后加distinct 关键词就可以;


    如果是单列,可以用distinct(col)函数


希望我的回答对您有用!

参考技术A select distinct

SQL 查询 Distinct / Group By 不工​​作

【中文标题】SQL 查询 Distinct / Group By 不工​​作【英文标题】:SQL query Distinct / Group By not working 【发布时间】:2013-03-06 15:45:25 【问题描述】:

我不是一个很好的选择陈述工匠,希望有人能提供帮助。我有两个制造零件表:

STOCK 表中有常备库存。它包含所有零件编号,这些零件编号存在于多行中,因为零件分散在多个位置。这是正确的。

RECEIPT 表是某人构建的表。它只是最近收到零件的年份。每一行只有零件编号和收货年份。零件编号仅明确列出一次。

我正在尝试将“收货年份”列粘贴到原始 STOCK 表上,以仅报告收到零件的年份。我不想更改 STOCK 表中的原始数据,只需根据 PART NUMBER 上的匹配将收据年份添加到每一行。 这是我的选择语句:

SELECT DISTINCT STOCK.Project, STOCK.[Part Id], STOCK.Warehouse, STOCK.Location, RECEIPTS.Year from STOCK LEFT JOIN RECEIPTS on STOCK.[Part Id] = RECEIPTS.ITEM_ID GROUP BY STOCK.Project, STOCK.[Part Id], STOCK.Warehouse, STOCK.Location, RECEIPTS.Year;

不幸的是,我的查询不断复制 RECEIPTS 表中可用的每一年的行,如下所示:

Proj        Part Id         Whse_ID Loc         Receipt_Year
A198.730    5962-9313101MPA 770 GFMSTK-116B2    2004
A198.730    5962-9313101MPA 770 GFMSTK-116B2    2005
A198.730    5962-9313101MPA 770 GFMSTK-116B2    2006
A198.730    5962-9313101MPA 770 GFMSTK-116B2    2007
A198.730    5962-9313101MPA 770 GFMSTK-116B2    2009
A198.730    5962-9313101MPA 770 GFMSTK-116B2    2011
A198.730    5962-9313101MPA 770 GFMSTK-116B2    2012
A198.730    5962-9313101MPA 770 GFMSTK-116B2    2013

仅在 2004 年收到了 5962- 部分(收据中的一个不同行)。

非常感谢任何帮助。谢谢, 杰米

【问题讨论】:

【参考方案1】:

通过首先提取数据上的最大日期记录的引物查询解决。

【讨论】:

这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post。 抱歉,我自己通过两个后续查询解决了这个问题。第一个查询提取最大日期的数据以消除重复记录,然后第二个查询完成我需要的过滤器

以上是关于SQL中DISTINCT的位置的主要内容,如果未能解决你的问题,请参考以下文章

在一列上选择 DISTINCT,返回多个其他列(SQL Server)

SQL 查询 Distinct / Group By 不工​​作

SQL笔记SQL语法SELECT语句DISTINCT语句LIMITLIMIT和OFFSET组合使用WHERE 子句

LINQ to SQL语句之Select/Distinct和Count/Sum/Min/Max/Avg (转)

SQL 必知必会- 第三课 排序检索数据

SQL中distinct的用法