作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有 ORDER BY 子句的 SELECT TOP 查询,它没有返回正确的结果。下面是一个示例查询及其输出。
任何建议/解决方法/解决方案?
查询:
CREATE TABLE #TestTop
(
TopID INT,
TopStr VARCHAR(MAX)
)
INSERT INTO #TestTop VALUES(1749, '');
INSERT INTO #TestTop VALUES(1750, '');
INSERT INTO #TestTop VALUES(1752, 'z');
INSERT INTO #TestTop VALUES(1739, 'a');
SELECT * FROM #TestTop ORDER BY TopStr ASC
SELECT TOP 1 * FROM #TestTop ORDER BY TopStr ASC
SELECT TOP 4 * FROM #TestTop ORDER BY TopStr ASC
DROP TABLE #TestTop;
结果:
[SELECT *]TopID TopStr----------- -----------1749 1750 1739 a1752 z [SELECT TOP 1]TopID TopStr----------- --------------1750 [SELECT TOP 4]TopID TopStr----------- --------------1750 1749 1739 a1752 z
最佳答案
您没有指定完整的排序,因此数据库(无论是哪个数据库)有权以它想要的任何顺序返回在 TopStr 上匹配的行。仅仅因为您的第一个查询恰好给出了您想要的顺序是幸运的,并且这可能会根据数据库升级/系统负载/许多其他因素而改变。
如果您希望结果按该列和 TopStr 排序,则需要将 TopId 添加到排序列表中。
关于SQL:带有 ORDER BY 子句的 SELECT TOP 不返回正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24425913/
我是一名优秀的程序员,十分优秀!