添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

2:那么如果我们不加distinct呢?

如果不加distinct,那么 select distinct FullName from users order by Id就是正确的。

3:这个问题经过 测试 ,只有在sqlserver中才会有, MySQL 中是不会有这个问题的。

4:下面我们来看看原理啊,为什么会出现上面的情况呢?

加了distinct后,distinct字段自带排序功能,会先按照distinct后面的字段进行排序。

order by可以改变distinct自带的排序,从而达到你想要的排序效果,而不是distinct的排序效果。

distinct是怎么排序的,以及它是怎么去重复的,可以看sql的执行计划。

5:综上,其实就是一个执行先后顺序问题,没有distinct关键字的时候,order by关键字先执行,select 关键字后执行,有了distinct,selcet distinct关键字先执行,order by后执行,如果select distinct执行完后,字段都没有了,那么order by怎么排序呢?

当然,上面已经说了,只有sqlserver会有这个问题,mysql就没有这个问题,这个和它们各自设计时的理解不同。

1:sqlserver中如果用order by,同时用了distinct的话,order by后面的字段就必须出现在selcet的字段中。select distinct FullName from users order by Id上述 SQL 语句是不对的,会提示错误:80040e14 如果指定了 SELECT DISTINCT,那么 ORDER BY 子
上一篇:【 SQL 基础(一)】【 SQL 简介+ SQL 语法+ SQL SELECT 语句+ SQL SELECT DISTINCT 语句】 文章目录 SQL WHERE 子句 引号的使用 SQL AND & OR 运算符 SQL ORDER BY 子句 SQL WHERE 子句 WHERE 子句 用于规定 选择 的标准。 如需有条件地从表 选取数据,可将 WHERE 子句 添加到 SELECT 语句。 SELECT 列名称 FROM 表名称 WHERE 列 运算符 值 可在 WHERE 子句 使用的运算符 使用 WHERE 子句 如果只希望选取居住在城市 “北京” 的人,我们需要向 SELECT
解决办法: sql server 如果同时用 order by和 distinct ,那 order by后面的字段就 必须 出现 在selcet的字段 。这个问题只有在 sql server 才会有,my sql 是不会有这个问题的。 如果这样写会提示错误: select distinct name from user order by id 应该这样写: select distinct id,name from us...
SELECT distinct example_column1 FROM test.example_table where delisting_date>now() and product ='CU.SHF' ORDER BY `example_column2` ASC; 报错信息如下:(My SQL -8.0.16可以正常运行,My SQL -5.7报错) Error Code: 3...
<h3>回答1:</h3><br/>在 SQL Server 进行多字段去重操作时,通常需要使用 DISTINCT 关键字。 DISTINCT 关键字用于排除结果集 的重复行,例如: SELECT DISTINCT col1, col2 FROM table; 这将返回一个结果集,其 只包含不重复的col1和col2组合。 另一种方法是使用GROUP BY语句来对多个字段进行分组,然后使用聚合函数如COUNT、SUM或AVG来计算结果。例如: SELECT col1, col2, COUNT(*) FROM table GROUP BY col1, col2; 这将返回每个不重复的col1和col2组合以及它们在表 出现 的次数。 如果需要基于多个列进行排序,可以使用 ORDER BY 子句 。例如: SELECT DISTINCT col1, col2 FROM table ORDER BY col1, col2; 这将返回按col1和col2升序排序的结果。 <h3>回答2:</h3><br/>在 SQL Server ,去重操作可以通过使用 DISTINCT 关键字来实现。但是,如果要对多个字段进行去重,则需要采用不同的方法。 一种常见的方法是使用GROUP BY 子句 。在GROUP BY ,我们可以按照多个字段对数据进行分组,并且使用COUNT函数计算每个组 的行数。如果某个组具有超过1行,则说明该组 有重复的记录。因此,我们可以使用HAVING 子句 来筛选这些组,从而得到去重后的结果。 例如,假设我们有一个包含多个字段的表格,其 有些记录可能重复: CREATE TABLE my_table ( id INT NOT NULL, name VARCHAR(50) NOT NULL, age INT NOT NULL, city VARCHAR(50) NOT NULL, PRIMARY KEY (id) INSERT INTO my_table VALUES (1, 'John', 25, 'New York'); INSERT INTO my_table VALUES (2, 'Mary', 30, 'Los Angeles'); INSERT INTO my_table VALUES (3, 'John', 25, 'New York'); INSERT INTO my_table VALUES (4, 'Bob', 35, 'Chicago'); INSERT INTO my_table VALUES (5, 'Mary', 30, 'Los Angeles'); 现在,我们想要去掉其 的重复记录,即根据name、age和city字段去重。可以使用以下 SQL 查询: SELECT name, age, city, COUNT(*) FROM my_table GROUP BY name, age, city HAVING COUNT(*) > 1 这将返回如下结果: name | age | city | count ------+------+--------------+------- John | 25 | New York | 2 Mary | 30 | Los Angeles | 2 这意味着在这些组 有重复记录。因此,我们可以使用以下查询来获取去重后的结果: SELECT DISTINCT name, age, city FROM my_table WHERE (name, age, city) NOT IN ( SELECT name, age, city FROM my_table GROUP BY name, age, city HAVING COUNT(*) > 1 这将返回以下结果: name | age | city -----+-----+------------- Bob | 35 | Chicago John | 25 | New York Mary | 30 | Los Angeles 这种方法的思路是找到具有重复记录的组,然后在结果 排除它们,从而得到去重后的结果。注意,此方法只能应用于小型表格,因为在大型表格 ,GROUP BY和子查询会对性能产生不良影响。 因此,如果需要对大型表格进行去重操作,则最好使用其他方法,例如使用临时表或使用窗口函数等。 <h3>回答3:</h3><br/>针对 SQL Server 多字段去重问题,我们可以采用以下两种方式。 1. 使用 DISTINCT 关键字 在 SELECT 语句 使用 DISTINCT 关键字可以去除重复行。例如: ``` sql SELECT DISTINCT column1, column2, column3 FROM table_name 该语句将从表 选择 仅包含唯一组合的column1、column2和column3的行。需要注意的是,如果表 有多个重复组合, DISTINCT 将只返回一行。 2. 使用GROUP BY和HAVING 子句 使用GROUP BY 子句 按照 指定 的字段对结果进行分组,然后使用HAVING 子句 过滤掉不需要的结果。例如: ``` sql SELECT column1, column2, column3 FROM table_name GROUP BY column1, column2, column3 HAVING COUNT(*) > 1 该语句将从表 选择 具有重复组合的行。GROUP BY将按照column1、column2和column3对结果进行分组。COUNT(*) > 1限制了只返回重复组合的行。 需要注意的是,在使用GROUP BY并计算聚合函数时,所有列都 必须 在GROUP BY 列出,否则会产生错误。如果不想在结果 包含所有分组列,则只需在 SELECT 语句 包含需要的列即可。
svn报错:“Previous operation has not finished; run 'cleanup' if it was interrupted“ 的解决办法 璀璨星空fly: 确实有效,谢谢 WebStorm ctrl+shift+F 快捷键,无法打开全局搜索? 天真→邪: SQL SERVER 查询时日期格式化 Tisfy: 我曾经流连于宋元的词曲,但刚发现此文甚妙! WebStorm ctrl+shift+F 快捷键,无法打开全局搜索? 可以了这该死的输入法