Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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查询,首先显示最新值,然后显示其他ASC_Sql_Sorting - Fatal编程技术网

SQL查询,首先显示最新值,然后显示其他ASC

SQL查询,首先显示最新值,然后显示其他ASC,sql,sorting,Sql,Sorting,我有一个包含新闻的表格,然后使用foreach循环将其回送到滑块中。 我需要调整查询的排序顺序,因此最后添加的一个(max id)总是显示在第一位,其他的按id ASC排序 例如:新闻1,2,3,4。我需要它们像4,1,2,3那样回响 SELECT * FROM news ORDER BY sort ASC 如何先以max(id)的形式添加另一个条件,然后再对ASC进行排序 谢谢。您可以尝试以下查询: SELECT * FROM ( SELECT *, (SELECT

我有一个包含新闻的表格,然后使用foreach循环将其回送到滑块中。 我需要调整查询的排序顺序,因此最后添加的一个(max id)总是显示在第一位,其他的按id ASC排序

例如:新闻1,2,3,4。我需要它们像4,1,2,3那样回响

SELECT * FROM news ORDER BY sort ASC
如何先以max(id)的形式添加另一个条件,然后再对ASC进行排序


谢谢。

您可以尝试以下查询:

SELECT *
FROM (
   SELECT *,
         (SELECT MAX(Id) FROM news) AS max_id 
   FROM news) AS t
ORDER BY CASE WHEN id = max_id THEN 0 ELSE 1 END asc,
         id ASC
或者,使用
交叉连接

SELECT n.*
FROM news AS n
CROSS JOIN (SELECT MAX(Id) AS max_id FROM news) AS m
ORDER BY CASE WHEN n.id = m.max_id THEN 0 ELSE 1 END asc,
         n.id ASC

您可以尝试以下查询:

SELECT *
FROM (
   SELECT *,
         (SELECT MAX(Id) FROM news) AS max_id 
   FROM news) AS t
ORDER BY CASE WHEN id = max_id THEN 0 ELSE 1 END asc,
         id ASC
或者,使用
交叉连接

SELECT n.*
FROM news AS n
CROSS JOIN (SELECT MAX(Id) AS max_id FROM news) AS m
ORDER BY CASE WHEN n.id = m.max_id THEN 0 ELSE 1 END asc,
         n.id ASC
或者使用窗口功能

SELECT *
FROM (
    SELECT *, ROW_NUMBER() OVER (ORDER BY id DESC) AS RN
    FROM news) AS T
ORDER BY CASE WHEN RN = 1 THEN 0 ELSE 1 END, id

SELECT *
FROM (
    SELECT *, MAX(id) OVER () AS MaxID
    FROM news) AS T
ORDER BY CASE WHEN MaxID = id THEN 0 ELSE 1 END, id
或者使用窗口功能

SELECT *
FROM (
    SELECT *, ROW_NUMBER() OVER (ORDER BY id DESC) AS RN
    FROM news) AS T
ORDER BY CASE WHEN RN = 1 THEN 0 ELSE 1 END, id

SELECT *
FROM (
    SELECT *, MAX(id) OVER () AS MaxID
    FROM news) AS T
ORDER BY CASE WHEN MaxID = id THEN 0 ELSE 1 END, id

您使用的是哪种数据库管理系统?(您已经得到了产品特定的答案,不要浪费其他人的时间为“错误”的数据库编写答案。)您使用的是哪种dbms?(你已经得到了特定于产品的答案,不要浪费其他人的时间为“错误”的数据库写答案。)感谢所有建议,交叉连接方法有效。感谢所有建议,交叉连接方法有效。