Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 按偏移量排序_Sql_Mysql_Sql Order By - Fatal编程技术网

Sql 按偏移量排序

Sql 按偏移量排序,sql,mysql,sql-order-by,Sql,Mysql,Sql Order By,在MySQL查询中,我将如何选择: 所有行,按列名排序 名字大于“f”的应该排在第一位,其余的按字母顺序排列 所以我得到G,H,…,X,Y,Z,A,B,C…,F.也许我遗漏了什么,但它是 SELECT * FROM mytable WHERE name > 'F' ORDER BY name 也许我错过了什么,但它是 SELECT * FROM mytable WHERE name > 'F' ORDER BY name 您可以使用2个select查询创建一个视图 SELECT

在MySQL查询中,我将如何选择:

所有行,按列名排序 名字大于“f”的应该排在第一位,其余的按字母顺序排列
所以我得到G,H,…,X,Y,Z,A,B,C…,F.

也许我遗漏了什么,但它是

SELECT * FROM mytable WHERE name > 'F' ORDER BY name

也许我错过了什么,但它是

SELECT * FROM mytable WHERE name > 'F' ORDER BY name

您可以使用2个select查询创建一个视图

SELECT * FROM mytable WHERE name > 'F' ORDER BY name


并组合结果

您可以使用2个select查询创建一个视图

SELECT * FROM mytable WHERE name > 'F' ORDER BY name
SELECT 
  * 
FROM
  mytable 
ORDER BY
  CASE WHEN name > 'F' THEN 0 ELSE 1 END,
  name


把结果结合起来

我想他想要的答案是

SELECT 
  * 
FROM
  mytable 
ORDER BY
  CASE WHEN name > 'F' THEN 0 ELSE 1 END,
  name
SELECT * FROM mytable WHERE name > 'F' ORDER BY SUBSTR (name, 1, 1) + 'G'

我想他想要一个像这样的答案

SELECT * FROM mytable WHERE name > 'F' ORDER BY SUBSTR (name, 1, 1) + 'G'

使用MySQL,您可以使用以下较短的代码:

SELECT * FROM tbl ORDER BY name > 'F' DESC, name

G、 哦,我。。。大于F,因此上述条件将导致true,true最后排序,false首先排序,因此只需使用MySQL放置DESC,您可以使用以下较短的代码:

SELECT * FROM tbl ORDER BY name > 'F' DESC, name

G、 哦,我。。。大于F,因此上面的条件将导致true,true最后排序,false首先排序,所以只需将DESC放入即可,不会得到所有的行。我需要以A开头的名字放在zs后面,你不能得到所有的行。我需要在Zsno后面加上以A开头的名字——我35岁,有孩子;不,我35岁,有孩子;有趣的我不知道您可以通过不是查询结果列的函数进行排序。我使用select IF name>='F',0,1作为预排序,并使用它作为排序依据clauseThank you:非常有趣solution@monk.e.boy:在MySQL中,比较结果直接为0和1。这意味着您可以去掉这个案例,按名称进行排序,但我发现这没有那么直观,与其他SQL方言不兼容。@Tomalak同意,这是最可读的解决方案。其他一些是智能的,但混淆了:@DRapp:CASE不是一个函数,它是一个返回值的表达式。你可以按任何值排序,即使是经过计算的。很有趣。。。我不知道您可以通过不是查询结果列的函数进行排序。我使用select IF name>='F',0,1作为预排序,并使用它作为排序依据clauseThank you:非常有趣solution@monk.e.boy:在MySQL中,比较结果直接为0和1。这意味着您可以去掉这个案例,按名称进行排序,但我发现这没有那么直观,与其他SQL方言不兼容。@Tomalak同意,这是最可读的解决方案。其他一些是智能的,但混淆了:@DRapp:CASE不是一个函数,它是一个返回值的表达式。你可以按任何值排序,即使是计算过的。小错误:小错误:我不能让它工作我得到“函数匿名”\u database.SUBSTR不存在”抱歉-我只是做了一些懒惰的键入,这是一个指向你可能如何做的指针。我应该说,对于Oracle,使用ASCII'G'+ASCIISUBSTR name的顺序,1,1我无法让它工作我得到“函数匿名”\u database.SUBSTR不存在”抱歉-我只是做了一些懒惰的键入,这是一个指向如何操作的指针。我应该说,对于Oracle,使用ASCII'G'+ASCIISUBSTR名称的顺序,1,1