繁体   English   中英

模拟组,按顺序,从mysql限制到ms sql 2000

[英]Emulate group by, order by, limit from mysql to ms sql 2000

我在MySQL中有一个查询:

select slscod,slsname,brc
from td_casa
group by slscod
order by slsname
limit 0,100

此查询使用slsname升序检索前100个唯一销售代码,其中包含slsnamebrc

如何在MSSQL 2000中更改此查询?

基本语法是:

select top 100 slscod,slsname,brc 
from td_casa 
group by slscod 
order by slsname
SELECT TOP 100 slscod, slsname, brc
FROM td_casa
GROUP BY slscod, slsname, brc
ORDER BY slsname

注意:关于列'xyz'的注释在select ...错误中无效我注意到您选择了3列但在GROUP BY子句中指定了1列。 这是描述一个MySQL的具体行为在这里

MySQL扩展了GROUP BY的使用,允许选择GROUP BY子句中未提及的字段。 如果您没有从查询中获得预期的结果,请阅读第11.15节“用于GROUP BY子句的函数和修饰符”中的GROUP BY描述。

因为在MSSQL 2000中不支持ROW_NUMBER()LIMIT ... OFFSET ..最后,我发现了这个查询:

SELECT slscod, MIN(slsname) slsname, MIN(brc) brc FROM (
    SELECT top 30 slscod, MIN(slsname) slsname, MIN(brc) brc FROM
    (
        SELECT TOP (1*30) slscod, MIN(slsname) slsname, MIN(brc) brc
        FROM td_casa group by slscod
        ORDER BY slsname ASC
    ) AS t1 group by slscod
     ORDER BY slsname DESC ) AS t2 group by slscod ORDER BY MIN(slsname) ASC

如果在mysql中这是相同的:

select slscod,slsname,brc from td_casa group by slscod order by slsname limit 0,30

如果你改变TOP (2*30)这是相同的limit 30,30 TOP (3*30)这是相同的limit 60,30 ,依此类推。

迫切需要努力。 谢谢all.let的欢呼声

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM