标签: sql-order-by

SQL 按 CharIndex 排序()

我正在运行一个相当长的 SQL 查询,其核心非常基本:

SELECT * FROM documents WHERE doc_id IN (995,941,940,954,953,973)
Run Code Online (Sandbox Code Playgroud)

此查询的目标结果是按照 IN 子句中设置的顺序显示文档。但是,我还没有找到一个干净的解决方案来这样做。

我想我可以使用 charindex() 来处理这个问题。

ORDER BY charindex('995,941,940,954,953,973',doc_id)
Run Code Online (Sandbox Code Playgroud)

ORDER BY 的结果只是按照默认的 ASC 顺序对 doc_ids 进行排序。

有关如何具体定义此查询的结果顺序的任何指导吗?

sql sql-order-by asp-classic

0
推荐指数
1
解决办法
2874
查看次数

按总和(值)排序sql

我正在尝试从名为捐款的表中获取 blog_id 列表以及该博客 id 上的捐款总和。我想按捐款总额排序。基本上我想生成一个按捐赠排名的博客列表。博客保存在由 blog_id 引用的不同表中。

这就是我一直在尝试的,但它所做的只是总结所有捐赠并生成 1 行。我不明白我在这里做错了什么!

$donations_result = mysql_query("SELECT blog_id, sum(amount) FROM donations ORDER BY sum(amount)");
Run Code Online (Sandbox Code Playgroud)

捐款表是一系列 blog_ids 和个人捐款。所以像这样:

blog_id--捐赠
1 ----------26
1 ----------1
2 ----------24
2 --------- -12

mysql sum sql-order-by

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

省略 Order by 子句的 mysql Innodb 查询的“默认 order by”是什么?

所以我理解并发现帖子表明,当您从 DBMS 检索数据时,不建议在 SQL 查询中省略 order by 子句。

参考的资源和帖子(将更新):

SQL Server UNION - 默认 ORDER BY 行为是什么

如果未指定“排序依据”,查询会为记录集选择什么顺序?

https://dba.stackexchange.com/questions/6051/what-is-the-default-order-of-records-for-a-select-statement-in-mysql

问题 :

如果您想了解更多信息,请参阅下面问题的逻辑。

我的问题是:在带有innoDB引擎的mysql下,有谁知道DBMS如何有效地给我们结果?

我读到它是依赖于实现的,好的,但是有没有办法知道我当前的实现?

这具体是在哪里定义的?

是来自MySQL、InnoDB、操作系统相关吗?

那里没有某种清单吗?

最重要的是,如果我省略 order by 子句并获得结果,我无法确定该代码是否仍适用于较新的数据库版本,并且 DBMS 永远不会给我相同的结果,可以吗?

用例和逻辑:

我目前正在编写一个 CRUD API,并且我的数据库中有一个不包含“id”字段的表(尽管有一个 PK),所以当我在没有任何研究标准的情况下显示该表的结果时,我真的不知道应该用什么来排序结果。我的意思是,我可以使用 PK 或任何从不为空的字段,但这不会使其相关。所以我想知道,因为我的 CRUD 应该适用于任何表,并且我不想通过为这个特定表添加例外来解决这个问题,所以我也可以简单地省略 order by 子句。

最后注意事项:

当我阅读其他帖子、示例和代码示例时,我感觉我想走得太远。据我了解,众所周知,在请求中省略 Order By 子句只是一种不好的做法,并且没有可靠的默认订单子句,并不是说除非您指定,否则根本没有订单。

我只是想知道它是在哪里定义的,并且很想了解它在内部是如何工作的,或者至少是在哪里定义的(DBMS /存储引擎/操作系统相关/其他/多个标准)。我认为了解它并了解这里的内部机制也对其他人有益。

不管怎样,感谢您花时间阅读!祝你今天过得愉快。

mysql innodb sql-order-by

0
推荐指数
1
解决办法
4189
查看次数

在 SQL Developer 中使用 DESCRIBE 获取列及其数据类型的列表时,如何按列名称排序?

我需要一种方法来弄清楚如何在 SQL Developer 中使用 DESCRIBE 命令时获取按字母顺序排列的列列表。类似于 desc 表按名称排序;这当然行不通,但沿着这些思路。

oracle sql-order-by oracle-sqldeveloper

0
推荐指数
1
解决办法
2725
查看次数

Find max string value in column

I have a table with a column that is used to indicate a position. Positions start with A and could go up to AZ, just like in Excel. E.G.

Row | Position
----|---------
 1  |    A
 1  |    B
 1  |    C
 :  |    :
 1  |    Z
 1  |   AA
 1  |   AB
 2  |    A
 2  |    B
Run Code Online (Sandbox Code Playgroud)

etc.

If I use select max(position) from table where row = 1 the result is always Z and not AB. …

sql t-sql sql-server group-by sql-order-by

0
推荐指数
1
解决办法
269
查看次数

如何在按日期时间查询排序后更新 SQL Server 表

我正在使用 SQL Server 数据库,并且有一datetime列,数据类型为datetime,现在我已经知道如何按日期时间对表进行排序:

SELECT *
FROM [database].[dbo].[data]
ORDER BY [datetime]; 
Run Code Online (Sandbox Code Playgroud)

结果:

datetime
2020-03-18 09:18:00
2020-03-18 09:19:00
2020-03-18 09:20:00
2020-03-18 09:21:00
.............
.............
.............
Run Code Online (Sandbox Code Playgroud)

我的问题是在上述步骤之后,查询按日期时间排序,如何更新和保存表?因为我想保留或按日期时间排序数据。

任何人都可以帮忙吗?

sql sql-server datetime date sql-order-by

0
推荐指数
1
解决办法
62
查看次数

对行进行排序并以相同的排序顺序对其进行分组

首先,我想按日期列 asc 排序。然后按名称列分组。例如,

Name     date(mmddyyyy)
 A.      03/10/2020
 B.      03/09/2020
 C.      03/13/2020
 B.      03/11/2020
 A.      03/12/2020
 C.      03/12/2020
Run Code Online (Sandbox Code Playgroud)

所需的输出,

Name     Date
 B.      03/09/2020
 B.      03/11/2020
 A.      03/10/2020
 A.      03/12/2020
 C.      03/12/2020
 C.      03/13/2020
Run Code Online (Sandbox Code Playgroud)

我想通过 SQL 查询来实现这一点。是否可以?

sql t-sql sql-server date sql-order-by

0
推荐指数
1
解决办法
59
查看次数

多个 LIKE 运算符 ORDER BY Strongest

我有以下查询:

SELECT * FROM table_name
WHERE (genre LIKE '%romance%'
    OR genre LIKE '%comedy%'
    OR genre LIKE '%horror%')
ORDER BY *the column that has more*
Run Code Online (Sandbox Code Playgroud)

或类似的东西

$sql = "SELECT * FROM table WHERE
(genre LIKE '%romance%' AND genre LIKE '%comedy%' AND genre LIKE '%horror%')
#If result < 12
(genre LIKE '%romance%' AND genre LIKE '%comedy%') OR (genre LIKE '%romance%' AND genre LIKE '%horror%') OR (genre LIKE '%comedy%' AND genre LIKE '%horror%')
#If result < 12
(genre LIKE '%romance%' OR genre LIKE …
Run Code Online (Sandbox Code Playgroud)

mysql sql sql-order-by sql-like

0
推荐指数
1
解决办法
100
查看次数

SQL 将三列合并为一

我有一个包含三列的表:

[ID]  [name]         [link]
1     sample_name_1  sample_link_1
2     sample_name_2  sample_link_2
3     sample_name_3  sample_link_3
Run Code Online (Sandbox Code Playgroud)

我需要以某种方式将它们组合成一列,所以理想的结果是这样的:

[one_column]
1
sample_name_1
sample_name_1
2
sample_name_2
sample_link_2
3
sample_name_3
sample_link_3
Run Code Online (Sandbox Code Playgroud)

有没有人对在哪里查看以及如何在 SQL Server 中完成它有任何建议?

sql sql-server group-by sql-order-by

0
推荐指数
1
解决办法
53
查看次数

如何按子查询中的非聚合列排序?

我正在尝试在 Hasura 中创建一个函数来查询用户附近的帖子。我得到了那个工作,但我也想订购这些帖子。我收到一个 Postgres 错误,内容为:

“postgres-error : 列“b.Volume”必须出现在 GROUP BY 子句中或用于聚合函数中”

我是 Hasura 和 Postgres 的新手,我不确定您是否被允许做这样的事情。这是我的代码:

CREATE OR REPLACE FUNCTION public.search_posts_near_user(id uuid, distance_kms integer, volume integer)
 RETURNS SETOF user_posts
 LANGUAGE sql
 STABLE
AS $function$
  SELECT  A.id, A.location,
  (SELECT json_agg(row_to_json(B)) FROM "Posts" B
   WHERE (
     ST_Distance(
       ST_Transform(B.location::Geometry, 3857),
       ST_Transform(A.location::Geometry, 3857)
     ) /1000) < distance_kms AND B."Volume" < volume
    ORDER BY B."Volume" Desc
   ) AS nearby_Posts
  FROM users A where A.id = id
$function$
Run Code Online (Sandbox Code Playgroud)

sql postgresql sql-order-by knn hasura

0
推荐指数
1
解决办法
56
查看次数