sql - Order by 子句正在改变我的结果集

标签 sql sql-server sql-order-by

我知道为什么会这样,但如果可能的话,我想找到解决方法。

例如,我的数据库中有 4 行,每行都有一个日期时间(它们都不同)。我想要做的是获取最新的 2 行,但使用升序,以便最旧的位于结果集的顶部。

我目前正在使用

SELECT TOP 2 *
FROM mytable
WHERE someid = @something
ORDER BY added DESC

这为我提供了正确的行,但顺序错误。如果我将 DESC 更改为 ASC,它会得到正确的顺序,但四行中较旧的两行。这一切对我来说都很有意义,但有没有办法解决它?

编辑:通过以下 Elliot 的回答解决。但是,如果不为派生表设置别名,语法将无法工作。这是结果

SELECT * FROM 
(SELECT TOP 2 * FROM mytable WHERE someid = @something ORDER BY added DESC) AS tbl
ORDER BY tbl.added ASC

最佳答案

我认为一种蛮力解决方案是:

SELECT *
FROM (SELECT TOP 2 * FROM mytable WHERE someid = @something ORDER BY added DESC)
ORDER BY added

关于sql - Order by 子句正在改变我的结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7642232/

相关文章:

sql - INSERT INTO SELECT * FROM,同时将数据类型转换为外键

sql - 从具有数千行的表中查询最新 1000 条记录的最佳方法?

sql - 选择表中的人员并排除妻子,但合并他们的名字

MySQL 详分割组

sql-server - SQL Server 基于模式的字符串提取

union - MySQL Union Query with/L​​eft Join - 按错误排序?

mysql - 我想显示最高的号码。剧集数

带有主题和子主题的年级 MySQL 表设计

php - 将翻译放在 JSON 中是个好主意吗?

sql-server - Azure SQLServerException 升级后