sql - SQL选择顶部1

标签 sql

我从要选择的表中得到奇怪的结果。请考虑下表:

USERID    TICKETSASSIGNED

1         0  
100       0  
101       0  
102       0  
103       0  


现在,如果我有以下sql:

SELECT TOP 1 USERID  
  FROM TABLEX  
  ORDER BY TICKETSASSIGNED


我期望得到的结果是“ 1”,但在大多数情况下,我一直获得“ 100”,这是第二个记录。由于TICKETSASSIGNED的值都为“ 0”,因此它随机选择它认为是TOP 1的那个,因为这是我要订购的字段。在这种情况下,要获得正确的值“ 1”,我还必须在USERID上订购。

有任何想法吗?

最佳答案

我期望得到的结果是“ 1”,但在大多数情况下,我一直获得“ 100”,这是第二个记录。由于TICKETSASSINGED值全为“ 0”,因此它随机选择它认为是TOP 1的那个,因为这是我要订购的字段。在这种情况下,要获得正确的值“ 1”,我还必须在USERID上订购。


这是所有SQL中的默认行为-如果没有ORDER BY子句,则不会保证顺序,在这种情况下,您将不会按相关数据进行排序,因此数据库会任意选择一行。

用:

ORDER BY TICKETSASSIGNED, USERID    

关于sql - SQL选择顶部1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3453592/

相关文章:

mysql - SQL:将两个结果行合并为一个

sql - Firebird 截断表/删除所有行

java - H2 DB - 列必须在 Group By 列表中

mysql - 通过特定键的范围限制 mysql 结果,包括重复

sql - 从给定另一个输入的表中获取计数

sql - 检查对同一表中唯一列的约束引用

.net - linq to sql将这个查询翻译成: "select *"?格式是不是效率低下

java - 将 sql 查询上的 native 不同值转换为 hql

mysql - 存储过程中的 SQL 变量 ORDER BY 子句

sql - 有没有更快的方法来计算连接上的记录