我正在运行一个相当长的 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 进行排序。
有关如何具体定义此查询的结果顺序的任何指导吗?
我正在尝试从名为捐款的表中获取 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
所以我理解并发现帖子表明,当您从 DBMS 检索数据时,不建议在 SQL 查询中省略 order by 子句。
参考的资源和帖子(将更新):
SQL Server UNION - 默认 ORDER BY 行为是什么
问题 :
如果您想了解更多信息,请参阅下面问题的逻辑。
我的问题是:在带有innoDB引擎的mysql下,有谁知道DBMS如何有效地给我们结果?
我读到它是依赖于实现的,好的,但是有没有办法知道我当前的实现?
这具体是在哪里定义的?
是来自MySQL、InnoDB、操作系统相关吗?
那里没有某种清单吗?
最重要的是,如果我省略 order by 子句并获得结果,我无法确定该代码是否仍适用于较新的数据库版本,并且 DBMS 永远不会给我相同的结果,可以吗?
用例和逻辑:
我目前正在编写一个 CRUD API,并且我的数据库中有一个不包含“id”字段的表(尽管有一个 PK),所以当我在没有任何研究标准的情况下显示该表的结果时,我真的不知道应该用什么来排序结果。我的意思是,我可以使用 PK 或任何从不为空的字段,但这不会使其相关。所以我想知道,因为我的 CRUD 应该适用于任何表,并且我不想通过为这个特定表添加例外来解决这个问题,所以我也可以简单地省略 order by 子句。
最后注意事项:
当我阅读其他帖子、示例和代码示例时,我感觉我想走得太远。据我了解,众所周知,在请求中省略 Order By 子句只是一种不好的做法,并且没有可靠的默认订单子句,并不是说除非您指定,否则根本没有订单。
我只是想知道它是在哪里定义的,并且很想了解它在内部是如何工作的,或者至少是在哪里定义的(DBMS /存储引擎/操作系统相关/其他/多个标准)。我认为了解它并了解这里的内部机制也对其他人有益。
不管怎样,感谢您花时间阅读!祝你今天过得愉快。
我需要一种方法来弄清楚如何在 SQL Developer 中使用 DESCRIBE 命令时获取按字母顺序排列的列列表。类似于 desc 表按名称排序;这当然行不通,但沿着这些思路。
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 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)
我的问题是在上述步骤之后,查询按日期时间排序,如何更新和保存表?因为我想保留或按日期时间排序数据。
任何人都可以帮忙吗?
首先,我想按日期列 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 查询来实现这一点。是否可以?
我有以下查询:
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) 我有一个包含三列的表:
[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 中完成它有任何建议?
我正在尝试在 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-order-by ×10
sql ×7
sql-server ×4
mysql ×3
date ×2
group-by ×2
t-sql ×2
asp-classic ×1
datetime ×1
hasura ×1
innodb ×1
knn ×1
oracle ×1
postgresql ×1
sql-like ×1
sum ×1