标签: sql-order-by

SQL ORDER由`no`结尾的NULL

我有一个MySql查询,按no列命令我的结果(int,可以为null).简单的例子:

SELECT * FROM table ORDER BY no ASC

我想得到一个类似的结果集

1, 2, 3, 10, 52, 66, NULL, NULL, NULL

但我明白了

NULL, NULL, NULL, 1, 2, 3, 10, 52, 66

是否可以使用SQL查询?

mysql sql-order-by

13
推荐指数
1
解决办法
7441
查看次数

如何优化MASSIVE MySQL表上计算列的ORDER BY

我有一个非常大(超过80万行)的非规范化MySQL表.简化的架构如下所示:

+-----------+-------------+--------------+--------------+
|    ID     |   PARAM1    |   PARAM2     |   PARAM3     |
+-----------+-------------+--------------+--------------+
|    1      |   .04       |    .87       |    .78       |
+-----------+-------------+--------------+--------------+
|    2      |   .12       |    .02       |    .76       |
+-----------+-------------+--------------+--------------+
|    3      |   .24       |    .92       |    .23       |
+-----------+-------------+--------------+--------------+
|    4      |   .65       |    .12       |    .01       |
+-----------+-------------+--------------+--------------+
|    5      |   .98       |    .45       |    .65       |
+-----------+-------------+--------------+--------------+

我试图看看是否有一种优化查询的方法,其中我将权重应用于每个PARAM列(权重在0和1之间),然后将它们平均得出计算值SCORE.然后我想ORDER BY计算出的SCORE列.

例如,假设PARAM1的权重为.5,PARAM2的权重为.23,PARAM3的权重为.76,您最终会得到类似于:

SELECT ID, ((PARAM1 * .5) + (PARAM2 * .23) + (PARAM3 * .76)) / 3 …
Run Code Online (Sandbox Code Playgroud)

mysql sql-order-by query-optimization

13
推荐指数
1
解决办法
4603
查看次数

MySQL - 使用GROUP BY和DESC

在我的SQL查询中,我使用GROUP BYORDER BY子句选择数据.该表numbers在多行中具有相同的行,每行具有不同的时间.所以我想我想要应用GROUP BY子句.

但是在结果中返回最旧的时间与数字,但我需要最近的时间.

SELECT * FROM TABLE GROUP BY (numbers) ORDER BY time DESC
Run Code Online (Sandbox Code Playgroud)

查询看起来好像应首先应用GROUP BY然后ORDER BY ...但结果似乎不会以这种方式工作.

有没有什么办法解决这一问题?

mysql sql group-by sql-order-by

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

如何从足球[足球]结果的mysql表中动态输出积分表?

我一直试图找到关于这个主题的东西,我似乎找不到任何东西,这里有几个问题,但它们对我的特定项目不起作用.

我问了一个关于更新表的类似问题,但它不能用于我真正想要的是结果列表.

 --------------------------------------------------------
|id  |   hometeam   |goalsfor|goalsagainst|   awayteam   |
 --------------------------------------------------------
| 1  |Inter Milan   |   3    |     1      | FC Barcelona |
 --------------------------------------------------------
| 2  |FC Barcelona  |   1    |     0      | Inter Milan  |
 --------------------------------------------------------
| 3  |Inter Milan   |   4    |     0      | AC Milan     |
 --------------------------------------------------------
| 4  |AC Milan      |   0    |     2      | Inter Milan  |
 --------------------------------------------------------
| 5  |Real Madrid   |   2    |     0      | AC Milan     |
 --------------------------------------------------------
| 6  |AC Milan      | …
Run Code Online (Sandbox Code Playgroud)

php mysql sql-order-by

13
推荐指数
1
解决办法
7129
查看次数

使用DISTINCT时,LINQ to SQL不生成ORDER BY?

以下基本LINQ to SQL语句不会导致orderby工作.正如您在T-SQL中看到的那样,没有orderby.你知道为什么吗?

LINQ to SQL:

      var results = (from stats in db.t_harvest_statistics
                       orderby stats.unit_number
                       select stats.unit_number).Distinct().ToList();
Run Code Online (Sandbox Code Playgroud)

以上TSQL中的结果

SELECT 
[Distinct1].[unit_number] AS [unit_number]
FROM ( SELECT DISTINCT 
[Extent1].[unit_number] AS [unit_number]
FROM [dbo].[t_harvest_statistics] AS [Extent1]
     )  AS [Distinct1]
Run Code Online (Sandbox Code Playgroud)

distinct sql-order-by linq-to-sql

13
推荐指数
1
解决办法
6292
查看次数

是否可以在SQL Server 2008中选择特定的ORDER BY?

我有一个表格,其中包含日期和时间,日期列,可以输入七天中的任何一天,并将它们设置为数据类型varchar.由于该表保存预订的时间为客户,我想从其中ID匹配的表中选择所有的日子,我想白天周一至周日进行排序.我希望我可以在此查询中添加一些内容来手动选择结果返回的顺序,如下所示:

select * 
from requirements 
where Family_ID = 1 
ORDER BY Day, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
Run Code Online (Sandbox Code Playgroud)

这当然不起作用,但我只想表明我想要实现的目标.客户不一定每天都需要帮助,我只想显示他们预订的日子.

通过DESC和ASC排序对一周中的几天没有帮助,我将不胜感激如何实现这一目标的任何提示.

谢谢.

sql-order-by sql-server-2008

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

1这个订单是1?

我在MySQL中有一个问题,做得对.但书籍代码略有不同.

书:

use tennis;
select playerno, datediff(coalesce(end_date, current_date), 
begin_date) as Difference, position
from committee_members
where datediff(coalesce(end_date, current_date), begin_date) > 500
order by 1;
Run Code Online (Sandbox Code Playgroud)

1这个订单是什么?

我的代码也有效,几乎相同,除了:

select playerno, datediff(coalesce(end_date, current_date) AS Data,
order by Data;
Run Code Online (Sandbox Code Playgroud)

mysql sql-order-by

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

Sql按多列排序

我有以下结果

VendorName | IncidentID | IncidentStatus | IncidentDate
-------------------------------------------------------
XYZ        | 100        |     Open       | 02-JUN-2011    
XYZ        | 101        |     Open       | 03-JUN-2011  
ABC        | 102        |     Open       | 01-JUN-2011  
XYZ        | 103        |     Open       | 01-APR-2011  
ABC        | 105        |     Open       | 05-JUN-2011 
Run Code Online (Sandbox Code Playgroud)

我想订购VendorName最新的事件.供应商ABC有最新的事件,因此它应该首先与同一供应商的所有其他事件,然后下一个供应商与所有相应的事件降序.期望的结果是这样的 -

VendorName | IncidentID | IncidentStatus | IncidentDate  
-------------------------------------------------------
ABC        | 105        |     Open       | 05-JUN-2011 
ABC        | 102        |     Open       | 01-JUN-2011
XYZ        | 101        |     Open       | 03-JUN-2011 
XYZ …
Run Code Online (Sandbox Code Playgroud)

sql oracle sql-order-by

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

使用ORDER BY更新

需要"配合" UPDATEORDER BY.我正在尝试使用游标,但得到错误:

cursor "cursupd" doesn't specify a line,
SQL state: 24000
Run Code Online (Sandbox Code Playgroud)

码:

BEGIN;
    DECLARE cursUpd CURSOR FOR SELECT * FROM "table" WHERE "field" = 5760 AND "sequence" >= 0 AND "sequence" < 9 ORDER BY "sequence" DESC;
    UPDATE "table" SET "sequence" = "sequence" + 2 WHERE CURRENT OF cursUpd;
    CLOSE cursUpd;
COMMIT;
Run Code Online (Sandbox Code Playgroud)

怎么做正确?

更新1

没有光标,当我这样做时:

UPDATE "CableLinePoint" AS "t"
SET "sequence" = t."sequence" + 2
from (
    select max("sequence") "sequence", "id"
    from "CableLinePoint"
    where
        "CableLine" = …
Run Code Online (Sandbox Code Playgroud)

sql postgresql sql-order-by sql-update

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

具有ORDER BY NULL的LISTAGG实际上使用什么作为订单标准?

如果我做

SELECT LISTAGG( COLUMN_VALUE ) WITHIN GROUP ( ORDER BY NULL )   AS OrderByNULL,
       LISTAGG( COLUMN_VALUE ) WITHIN GROUP ( ORDER BY 1 )      AS OrderByCONST,
       LISTAGG( COLUMN_VALUE ) WITHIN GROUP ( ORDER BY ROWNUM ) AS OrderByROWNUM
FROM   TABLE( SYS.ODCIVARCHAR2LIST( '5', '222', '4' ) );
Run Code Online (Sandbox Code Playgroud)

输出是:

ORDERBYNULL ORDERBYCONST ORDERBYROWNUM
----------- ------------ -------------
222,4,5     222,4,5      5,222,4
Run Code Online (Sandbox Code Playgroud)

当使用ORDER BY非确定性排序(NULL或常量)时,查询似乎已完成字母数字排序,并在使用ORDER BY ROWNUM(确定性)时保持输入顺序.

LISTAGG文件指出:

order_by_clause确定返回连接值的顺序.仅当ORDER BY列列表实现唯一排序时,该函数才是确定性的.

在查看分析函数时,它指出:

每当order_by_clause为多行产生相同的值时,该函数的行为如下:[...]对于所有其他分析函数,结果取决于窗口规范.如果使用RANGE关键字指定逻辑窗口,则该函数会为每个行返回相同的结果.如果使用ROWS关键字指定物理窗口,则结果是不确定的.

因此,据我所知,从文档中可以看出非确定性排序 - 但是,该函数根据字母数字排序而不是处理行的顺序(这是常见的)提供确定性输出 …

oracle sql-order-by listagg

13
推荐指数
1
解决办法
5539
查看次数