混淆加工顺序" distinct"," top" "按顺序排列"条款

时间:2016-10-21 04:10:35

标签: sql sql-server tsql

我是SQL和SQL Server的新手,并且无法理解查询中不同子句的PROCESSING顺序。

我有一个问题:

SELECT DISTINCT TOP(10) name
FROM tblEmployees
ORDER BY birthday;

我了解查询的实际处理顺序是:

FROM 
SELECT 
ORDER BY

但是,在我看来,DISTINCTTOP等子句依赖于ORDER BY子句的结果。因此,如果在SELECT子句之前执行ORDER BY子句,DISTINCTTOP如何使用ORDER BY子句的结果?

1 个答案:

答案 0 :(得分:4)

查询按以下顺序进行逻辑处理

DISTINCT
ORDER BY之前处理了

DISTINCT,因此ORDER BY不依赖于DISTINCT

由于ORDER BY将会从结果中移除第一个重复项,然后将 rects = groups.selectAll('rect') .data(function (d) { return d; }) .enter() .append('rect') .attr('x', function (d) { return xScale(d.x0); }) .attr('y', function (d, i) { return yScale(d.y); }) .attr('height', function (d) { return yScale.rangeBand(); }) .attr('width', function (d) { return xScale(d.x); }) .attr('class', function (d) { if(d.month == 'Open/New'){ return 'hm-statusNew'; }else if(d.month == 'In Progress'){ return 'hm-inProgress'; }else{ return 'hm-completed'; } }) .on('mouseover', function (d) { var xPos = parseFloat(d3.select(this).attr('x')) / 2 + width / 2; var yPos = parseFloat(d3.select(this).attr('y')) + yScale.rangeBand() / 2; d3.select('#tooltip') .style('left', xPos + 'px') .style('top', yPos + 'px') .select('#value') .text(d.x); d3.select('#tooltip').classed('hidden', false); }) .on('mouseout', function () { d3.select('#tooltip').classed('hidden', true); }) 应用