Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL:保留返回值的顺序_Sql_Tsql_Sybase - Fatal编程技术网

SQL:保留返回值的顺序

SQL:保留返回值的顺序,sql,tsql,sybase,Sql,Tsql,Sybase,如果我向数据库提交以下SQL语句: SELECT setting_value FROM dba.system_settings WHERE setting_name = 'RequestWebServiceURL' OR setting_name = 'UNITS' OR setting_name = 'FACTOR' 我按以下顺序得到结果: setting_value --------------- www.requestURL 1 degrees 尽管我

如果我向数据库提交以下SQL语句:

SELECT setting_value 
  FROM dba.system_settings 
 WHERE setting_name = 'RequestWebServiceURL' 
    OR setting_name = 'UNITS' 
    OR setting_name = 'FACTOR'
我按以下顺序得到结果:

setting_value
---------------
www.requestURL 
1 
degrees
尽管我在SQL中在“FACTOR”之前指定了“UNIT”


然而,表是按设置_name排序的,这就是为什么我按这种顺序得到结果。这可能是一个愚蠢的问题,但基于上述查询的结果顺序是否可以保留?在这种情况下,数据库是Sybase。

SQL通常在结果排序方面(当您没有明确请求时)几乎没有保证,特别是在涉及索引时


如果顺序对您很重要,可以随意添加一个
order by
子句,例如在主键上(这似乎是您试图对其进行排序的内容)。

通常,SQL在结果排序方面(当您没有显式请求时)几乎没有保证,特别是在涉及索引时


如果顺序对您很重要,请随意添加一个
order by
子句,例如在主键上(这似乎就是您试图订购的内容)。

ANSI的方法是在
order by
子句中使用大小写表达式:

  SELECT setting_value 
    FROM dba.system_settings 
   WHERE setting_name IN ('RequestWebServiceURL', 'UNITS', 'FACTOR')
ORDER BY CASE setting_name
           WHEN 'RequestWebServiceURL' THEN 1
           WHEN 'UNITS' THEN 2
           WHEN 'FACTOR' THEN 3
           ELSE 4
         END

orderby
子句是保证结果集顺序的唯一方法。否则,您可能会看到插入顺序。

ANSI的方法是在
order BY
子句中使用大小写表达式:

  SELECT setting_value 
    FROM dba.system_settings 
   WHERE setting_name IN ('RequestWebServiceURL', 'UNITS', 'FACTOR')
ORDER BY CASE setting_name
           WHEN 'RequestWebServiceURL' THEN 1
           WHEN 'UNITS' THEN 2
           WHEN 'FACTOR' THEN 3
           ELSE 4
         END

orderby
子句是保证结果集顺序的唯一方法。否则,您可能会看到插入顺序。

如果您意识到
其中X=a或X=b或X=c
其中X in(a,b,c)
的扩展,您可以找到大量重复的问题来实现这种顺序。如果您意识到
其中X=a或X=b或X=c
其中X in的扩展(a、b、c)
,您可以找到大量重复的问题来实现这种排序。