Questions tagged «order-by»

SQL SELECT语句中用于对查询结果进行排序的子句。

2
有没有一种方法可以优化按联接表的列排序?
这是我的慢查询: SELECT `products_counts`.`cid` FROM `products_counts` `products_counts` LEFT OUTER JOIN `products` `products` ON ( `products_counts`.`product_id` = `products`.`id` ) LEFT OUTER JOIN `trademarks` `trademark` ON ( `products`.`trademark_id` = `trademark`.`id` ) LEFT OUTER JOIN `suppliers` `supplier` ON ( `products_counts`.`supplier_id` = `supplier`.`id` ) WHERE `products_counts`.product_id IN (159, 572, 1075, 1102, 1145, 1162, 1660, 2355, …
10 mysql  order-by 

1
使用联接时,SQL Server的订购结果如何?
SQL Server如何找出查询执行结果集中的记录顺序? 我试图做它的正面或反面,但发现自己在挠挠头。当我更改字段时,我选择的顺序也会更改。当我使用a执行以下SQL时,SELECT *我得到的记录相同,但顺序却大不相同。 SELECT TOP (900) AD.ATTACHMENTID, AD.NAME, AD.ISINLINE, AD.INSERTEDDATETIME, ATMT.ATTACHMENTBLOB, U.UFID FROM ATTACHMENTDETAIL AD WITH (NOLOCK) INNER JOIN MESSAGEATTACHMENT MA ON MA.ATTACHMENTID = AD.ATTACHMENTID INNER JOIN ATTACHMENT ATMT ON ATMT.ATTACHMENTID = AD.ATTACHMENTID INNER JOIN MESSAGE MSG ON MSG.ID = MA.MESSAGEID INNER JOIN MESSAGEDETAIL MD ON MD.MESSAGEID = MA.MESSAGEID …

3
是否可以保证SELECT ROW_NUMBER()返回按生成的行号排序的结果?
例如考虑SQL查询: SELECT A.[Name], ROW_NUMBER() OVER(ORDER BY A.[Name] ASC) FROM [FooTable] AS A 在这里,我观察到返回的结果按A. [名称]排序。如果我将ROW_NUMBER函数中定义的排序列更改为另一列,那么结果将再次由该列进行排序。 我期望将行号分配给这些行,但是我不希望这些行以相同的标准返回排序。这仅仅是查询执行方式的副作用(就我而言,在SQL Server 2008 R2上)还是可以保证这种行为?(我找不到关于这种保证的参考)。

3
如何对两个或更多列进行条件排序
在MS SQL Server 2005中,我正在编写一个带有条件排序的查询,而我的问题是我不知道如何使用两列对条件进行排序? 如果我这样编写代码,则正常运行 select * from table order by case @pkr when 'kol' then kol when 'nci' then nci end 我不知道如何对两个或更多列进行条件排序 select * from table order by case @pkr when 'KOL-NCI' then kol,nci when 'kol-MPCI' then kol,mpci end 有一个制作动态TSQL并使用它的想法,sp_executesql但我仍在寻找更好的想法?

2
子查询中ORDER BY的数据库实现
我正在使用包装SQL语句的应用程序(MapServer- http ://mapserver.org/ ),以便ORDER BY语句位于内部查询中。例如 SELECT * FROM ( SELECT ID, GEOM, Name FROM t ORDER BY Name ) as tbl 该应用程序具有许多不同的数据库驱动程序。我主要使用MS SQL Server驱动程序和SQL Server2008。如果在子查询中找到ORDER BY,则会引发错误。 从MS Docs(尽管这是针对SQL Server 2000的,但似乎仍然适用): 在视图,内联函数,派生表或子查询中使用ORDER BY子句时,它不能保证输出有序。而是,ORDER BY子句仅用于保证由Top运算符生成的结果集具有一致的组成。ORDER BY子句仅在最外层的SELECT语句中指定有序结果集时才保证。 但是,在Postgres(9)中运行的相同类型的查询和Oracle返回结果-子查询中定义的顺序。在Postgres中,查询计划显示结果已排序,并且Postgres发行说明中包括暗示使用子查询顺序的项目: 子查询ORDER BY匹配较高查询时避免排序 http://en.wikipedia.org/wiki/Order_by指出: 尽管某些数据库系统允许在子选择或视图定义中指定ORDER BY子句,但该显示不起作用。 但是从我自己查询计划的检查: SQL Server 2008不支持子查询中的ORDER BY Postgres 9确实在子查询中支持ORDER BY Oracle 10g在子查询中支持ORDER …

2
自定义涉及数组的jsonb键排序顺序
我在PostgreSQL中有一张表,里面有一些数据: create table t2 ( key jsonb, value jsonb ); INSERT INTO t2(key, value) VALUES ('1', '"test 1"') ,('2', '"test 2"') ,('3', '"test 3"') ,('[]', '"test 4"') ,('[1]', '"test 5"') ,('[2]', '"test 6"') ,('[3]', '"test 7"') ,('[1, 2]', '"test 8"') ,('[1, 2, 3]', '"test 9"') ,('[1, 3]', '"test 10"') ,('[1,2,4]', …

1
MySQL:在内部查询中使用“ ORDER BY”优化UNION
我只是建立了一个由多个具有相同布局的表组成的日志系统。 每个数据源都有一个表。 对于日志查看器,我想 UNION所有日志表, 通过帐户过滤它们, 添加一个伪列以标识源, 按照时间排序他们, 并限制它们的分页。 所有表都包含一个称为zeitpunkt索引日期/时间列的字段。 我的第一次尝试是: (SELECT l.id, l.account_id, l.vnum, l.count, l.preis, l.zeitpunkt AS zeit, 'hp' AS source FROM is_log AS l WHERE l.account_id = 730) UNION (SELECT l.id, l.account_id, l.vnum, l.count, l.preis, l.zeitpunkt, 'ig' AS source FROM ig_is_log AS l WHERE l.account_id = 730) ORDER …

3
查询最佳匹配并排序
我正在尝试按照以下方式编写查询: select * from tbl where col1 = 1 and col2 = 2 and col3 = 3 order by ... ; 我首先要获得所有3个WHERE条件都匹配(3/3)的所有结果,然后要获得任何2个条件都匹配(2/3)的所有结果,最后要获得任何1个条件都匹配(1/3)的所有结果。 这3个结果集中的每个都需要按排序(col4, col5, col6)。 我可以在一个查询中做到吗? 例如: 样本http://img708.imageshack.us/img708/1646/sampletableresult1.jpg 创建测试数据的脚本: IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MyTable]') AND type in (N'U')) DROP TABLE [dbo].[MyTable] GO CREATE TABLE dbo.MyTable …

2
为什么mysql使用错误的索引来按查询排序?
这是我的表,具有约10,000,000行数据 CREATE TABLE `votes` ( `subject_name` varchar(32) COLLATE utf8_unicode_ci NOT NULL, `subject_id` int(11) NOT NULL, `voter_id` int(11) NOT NULL, `rate` int(11) NOT NULL, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`subject_name`,`subject_id`,`voter_id`), KEY `IDX_518B7ACFEBB4B8AD` (`voter_id`), KEY `subject_timestamp` (`subject_name`,`subject_id`,`updated_at`), KEY `voter_timestamp` (`voter_id`,`updated_at`), CONSTRAINT `FK_518B7ACFEBB4B8AD` FOREIGN KEY (`voter_id`) REFERENCES `users` (`id`) ) …

2
DB2是否通过主键对数据进行排序
我最近与一位同事进行了讨论,他一直在努力从生产查询中删除order by子句,因为order by列与主键相同。 经过长时间的讨论,我试图解释说他不能保证根据主键进行排序,最后的结论是他不会推动更改MSSQL查询。 但是他仍然打算更改DB2查询。 我无法立即找到一篇文章,以证明DB2通过主键对查询进行排序,并且当前正在想知道是否这样做。 所以我的问题是,如果没有order by子句,DB2如何对查询进行排序?它使用主键吗? 在并行系统中,如何保证数据输出正确无序?
8 db2  order-by 

5
Oracle使用特殊字符最后对varchar2列进行排序
如何在Oracle中按自己定义的顺序对Varchar2或NVarchar2列进行排序。或者是否存在任何现有选项,这些选项将首先显示字母,然后显示数字,然后显示所有特殊字符。 我们的第一种方法是使用一个将字符手动映射到数字的函数。 select id, sorted_column from some_table order FN_SPECIAL_SORT_KEY(sorted_column,'asc') 特殊的排序功能将每个字符映射到一个2位数字,并将返回值用于排序。这似乎是非常昂贵的连接,并且感觉不对。 for i in 1..length(sorted_text) loop v_result:=v_result || case substr(sorted_text,i,1) WHEN ' ' THEN 82 WHEN '!' THEN 81 WHEN '"' THEN 80 WHEN '#' THEN 79 WHEN '$' .............. WHEN 'u' THEN 15 WHEN 'U' THEN 15 WHEN 'v' THEN …

4
如何在MySQL中执行复杂的GROUP BY?
我有一个表,其中包含几个进入其他表的键(每个键由多个列组成)。我希望能够将具有相同键的行分组在一起,但是我不想将所有行分组在一起。这不是简单GROUP BY的键,而是我希望能够使分组的数量为10。因此,如果某个特定键出现50次,则当我进行分组时(5组,共10组),我将获得5个结果。我也希望该分组在密钥内随机发生。 我不知道直接执行此操作的方法,而且我想出的环形交叉路方法无法正常工作。我想到的回旋解决方案是为每个键创建一个新列,该键将是一个整数,以使值i表示该ith键的出现(但以随机顺序)。然后,我可以进行整数除法,以使键中的每n个(例如10个)行具有相同的值,并且可以GROUP BY对该值进行a运算。 有没有更直接的方法来完成我刚刚描述的内容?这很尴尬,在创建新的索引列时遇到了问题(正如我在此问题中所述)。 编辑:首先请注意,这是针对MySQL。如果我的目标不清楚,我将添加一个示例。MySQL文档显示了一种接近目标的方法: CREATE TABLE animals ( grp ENUM('fish','mammal','bird') NOT NULL, id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (grp,id) ) ENGINE=MyISAM; INSERT INTO animals (grp,name) VALUES ('mammal','dog'),('mammal','cat'), ('bird','penguin'),('fish','lax'),('mammal','whale'), ('bird','ostrich'); SELECT * FROM animals ORDER BY grp,id; 这将创建一个表,该表虽然不是我想要的,但会变得接近: +--------+----+---------+ | grp | id | …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.