标签: sql-order-by

Sql Server 2008视图中的ORDER BY

我们的数据库中有一个ORDER BY的视图.现在,我意识到观点通常不会排序,因为不同的人可能会将它用于不同的事情,并希望它有所不同.然而,该视图用于需要特定订单的非常特定的用例.(这是足球联赛的球队排名.)

该数据库是Windows Server 2003 R2上的Sql Server 2008 Express,v.10.0.1763.0.

视图定义如下:

CREATE VIEW season.CurrentStandingsOrdered
AS
    SELECT TOP 100 PERCENT *, season.GetRanking(TEAMID) RANKING   
    FROM season.CurrentStandings 
    ORDER BY 
        GENDER, TEAMYEAR, CODE, POINTS DESC, 
        FORFEITS, GOALS_AGAINST, GOALS_FOR DESC, 
        DIFFERENTIAL, RANKING
Run Code Online (Sandbox Code Playgroud)

它返回:

GENDER, TEAMYEAR, CODE, TEAMID, CLUB, NAME,  
WINS, LOSSES, TIES, GOALS_FOR, GOALS_AGAINST,  
DIFFERENTIAL, POINTS, FORFEITS, RANKING
Run Code Online (Sandbox Code Playgroud)

现在,当我对视图运行SELECT时,它按GENDER,TEAMYEAR,CODE,TEAMID命令结果.请注意,它是按TEAMID而不是POINTS排序,因为order by子句指定.

但是,如果我复制SQL语句并完全按照新查询窗口中的方式运行它,它将按照ORDER BY子句的指定正确排序.

sql t-sql view sql-order-by sql-server-2008

11
推荐指数
2
解决办法
2万
查看次数

MySQL的最佳实践问题:按ID或日期排序?

这是一个无聊的问题,但是我从来没有得到过直接的回答.

假设我有一个包含以下字段和值的数据库表:

| id | date_added          | balance |
+------------------------------------+
|  1 | 2009-12-01 19:43:22 | 1237.50 |
|  2 | 2010-01-12 03:19:54 |  473.00 |
|  3 | 2010-01-12 03:19:54 | 2131.20 |
|  4 | 2010-01-20 11:27:31 | 3238.10 |
|  5 | 2010-01-25 22:52:07 |  569.40 |
+------------------------------------+    
Run Code Online (Sandbox Code Playgroud)


这是一个非常基本的"会计"子系统.我想获得最新的余额.该id字段设置为auto_increment.通常,我会使用:

SELECT balance FROM my_table ORDER BY date_added DESC LIMIT 1;

但我需要确保返回的值是最新的...(参见上面的id#2和3)

1)我会更好地使用:

SELECT balance FROM my_table ORDER BY id DESC LIMIT 1;

2)或者这是一个更好的解决方案?:

SELECT …

mysql sql-order-by

11
推荐指数
1
解决办法
2万
查看次数

MySQL SHOW COLUMNS的返回顺序

我需要在特定的表中找到列,这没有问题:

SHOW COLUMNS FROM tablename LIKE '%ColumnPrefix%';
Run Code Online (Sandbox Code Playgroud)

但是我需要知道它们将被返回的顺序,最好选择按字母顺序排序结果.我没有运气使用ORDER BY.

有任何想法吗?

mysql sql sql-order-by

11
推荐指数
2
解决办法
7875
查看次数

SQL-Server/Access - 按顺序1,2?

我今天遇到了一个问题,

SELECT col1,'yes' as col2  FROM myTable  
   WHERE col2=TRUE  
UNION  
SELECT col1,'no' as col2 FROM mytable  
   WHERE col2=FALSE  
ORDER BY 1,2  
Run Code Online (Sandbox Code Playgroud)

我认为它将按第一列排序然后第二列,但由于涉及UNION,我有点不确定是否有人可以解释此查询的确切含义

sql-server sql-order-by

11
推荐指数
1
解决办法
2万
查看次数

order_by in block each rails 3.1

我有一个order_by的循环:created_at和:desc

<% for comment in post.comments.order_by([:created_at, :desc]) %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

如何在每个块中执行order_by([:created_at,:desc]),ej:

<% post.comments.each do |comment|%>
<% end %>
Run Code Online (Sandbox Code Playgroud)

编辑

对我来说工作正常的代码:

post.comments.order([:created_at, :desc])[0,5].each do |comment|
Run Code Online (Sandbox Code Playgroud)

用[0,5]将结果限制为间隔.

each ruby-on-rails sql-order-by ruby-on-rails-3

11
推荐指数
1
解决办法
1万
查看次数

MYSQL从表中选择,获取表中的最新/最后10行

什么是最好,最简单的方法?我的查询目前是:

  SELECT * 
    FROM chat 
   WHERE (userID = $session AND toID = $friendID) 
      OR (userID = $friendID AND toID = $session) 
ORDER BY id 
   LIMIT 10
Run Code Online (Sandbox Code Playgroud)

这显示前10行,而不是最后10行.

编辑:我想要最后10行(是的,DESC这样做)但是我希望它们以ASCENDING顺序返回.

php mysql sql sql-order-by

11
推荐指数
1
解决办法
4万
查看次数

MYSQL - 订单时间戳值按从最新到最旧的顺序递增?

尝试按时间戳值排序某些结果时遇到问题.

我想根据时间戳值将这些结果从最新显示到最旧显示.

所以要解释一下,想象一下有3个结果:

2012-07-11 17:34:57
2012-07-11 17:33:28
2012-07-11 17:33:07
Run Code Online (Sandbox Code Playgroud)

这个结果集将是我需要的,但给出以下查询

SELECT timestamp
FROM randomTable
ORDER BY timestamp ASC
Run Code Online (Sandbox Code Playgroud)

我明白了:

2012-07-11 17:34:57
2012-07-11 17:33:07
2012-07-11 17:33:28
Run Code Online (Sandbox Code Playgroud)

这是因为它按数值排序并且07在之前28.

如果我按降序排序,我得到

2012-07-11 17:33:07
2012-07-11 17:33:28
2012-07-11 17:34:57
Run Code Online (Sandbox Code Playgroud)

这就是我正在寻找的......但它正好相反.

所以我的问题很简单,我怎么能按照我的描述按升序对这些值进行排序?

编辑:

问题

EDIT2:

CREATE TABLE `user_quotations` (
 `id` int(100) NOT NULL AUTO_INCREMENT,
 `quoteNumber` int(100) NOT NULL,
 `lastModified` datetime NOT NULL,
 `userId` int(100) NOT NULL,
 `manufacturer` varchar(250) COLLATE latin1_general_ci NOT NULL,
 `modelNumber` varchar(250) COLLATE latin1_general_ci NOT NULL,
 `productDesc` varchar(1000) COLLATE latin1_general_ci NOT NULL, …
Run Code Online (Sandbox Code Playgroud)

mysql timestamp sql-order-by

11
推荐指数
1
解决办法
7万
查看次数

MySQL按字母顺序排列

我有字符串如M1 M3 M4 M14 M30 M40等(字母后面的任何int 2-3位数)当我执行"ORDER BY name"时,它返回:

M1, M14, M3, M30, M4, M40

当我想要:

M1, M3, M4, M14, M30, M40 它将整个事物视为字符串,但我想将其视为字符串+ int

有任何想法吗?

mysql collation sql-order-by

11
推荐指数
1
解决办法
2万
查看次数

使用UNION ALL进行分组和排序

我有一个存储过程与以下查询:

SELECT (sum(addition)) AS [COUNT], 
MAX(CONVERT(VARCHAR(12),CREATED,102)) as [date]
FROM [TABLE_ONE]
WHERE convert(VARCHAR(12),CREATED,102) BETWEEN CONVERT(date,@startdate) AND CONVERT(date,@enddate)
AND [ServiceID]=@serid
GROUP BY CONVERT(VARCHAR(12),CREATED,102) 
ORDER BY  CONVERT(VARCHAR(12),CREATED,102)  
Run Code Online (Sandbox Code Playgroud)

我需要做一个union all,所以我可以从两个表中获得结果的总和,并且我希望结果按照相同的方式进行分组和排序.

这不起作用:

SELECT (sum(addition)) AS [COUNT], 
MAX(CONVERT(VARCHAR(12),CREATED,102)) as [date]
FROM [TABLE_ONE]
WHERE convert(VARCHAR(12),CREATED,102) BETWEEN CONVERT(date,@startdate) AND CONVERT(date,@enddate)
AND [ServiceID]=@serid
GROUP BY CONVERT(VARCHAR(12),CREATED,102) 
ORDER BY  CONVERT(VARCHAR(12),CREATED,102)  

UNION ALL

SELECT (sum(addition)) AS [COUNT], 
MAX(CONVERT(VARCHAR(12),CREATED,102)) as [date]
FROM [TABLE_TWO]
WHERE convert(VARCHAR(12),CREATED,102) BETWEEN CONVERT(date,@startdate) AND CONVERT(date,@enddate)
AND [ServiceID]=@serid
GROUP BY CONVERT(VARCHAR(12),CREATED,102) 
ORDER BY  CONVERT(VARCHAR(12),CREATED,102) 
Run Code Online (Sandbox Code Playgroud)

我想订购整体结果,并按日期分组.

sql group-by sql-order-by sql-server-2008 union-all

11
推荐指数
1
解决办法
3万
查看次数

在"UNION"上应用"ORDER BY"(Mysql)

美好的一天.所以,每个标志都在标题:)

我希望合并两个请求的结果并将结果排序在一起(因为不是一个接一个).=>我正在考虑应用一个联合并订购它们.它没用.

我在这里看了一下Stack或者这里的developpez(!!法国网站).我尝试了不同的例子和建议,但没有成功.从我的红色看来,这是因为我正在研究Mysql.

无论如何,这是我的尝试,结果:

我原来的2个要求

SELECT * FROM user_relation WHERE from_user_id = 1
List item
SELECT * FROM user_relation WHERE to_user_id = 1
Run Code Online (Sandbox Code Playgroud)

这个列表的结果由teh frist select(由索引键编排)的结果组成,后面是由Index KEy排序的第二个选择的结果.

尝试1:

(SELECT * FROM user_relation WHERE from_user_id = 1 ORDER BY trust_degree)
UNION
(SELECT * FROM user_relation WHERE to_user_id = 1 ORDER BY trust_degree)
Run Code Online (Sandbox Code Playgroud)

请求已运行,但结果与原始请求相同:首先选择的结果(按索引键排序),然后是第二个请求的结果

尝试2:

(SELECT * FROM user_relation WHERE from_user_id = 1 ORDER BY trust_degree)
UNION
(SELECT * FROM user_relation WHERE to_user_id = 1 ORDER BY trust_degree) …
Run Code Online (Sandbox Code Playgroud)

mysql union sql-order-by

11
推荐指数
2
解决办法
1万
查看次数