Sql 如何按insert sequence DESC排序数据?

Sql 如何按insert sequence DESC排序数据?,sql,mysql,Sql,Mysql,我有一个表:TestTable,这个表只有一个字段:value,我插入相同的数据: value ------------ ccc aa 111 bbb ------------ 我运行: select * from TestTable 可以通过以下方式显示我的结果顺序: ccc aa 111 bbb 现在,我想得到这个结果描述: bbb 111 aa ccc 如何创建此sql select * from TestTable order by (by what?) DESC 谢谢你 or

我有一个表:TestTable,这个表只有一个字段:value,我插入相同的数据:

value
------------
ccc
aa
111
bbb
------------
我运行:

select * from TestTable
可以通过以下方式显示我的结果顺序:

ccc
aa
111
bbb
现在,我想得到这个结果描述:

bbb
111
aa
ccc
如何创建此sql

select * from TestTable order by (by what?) DESC
谢谢你

order语句中没有可以使用的自动“创建订单”标识符。您应该使用
auto_increment
列对记录进行编号。然后可以按该列排序

order语句中没有可以使用的自动“创建订单”标识符。您应该使用
auto_increment
列对记录进行编号。然后可以按该列排序


您喜欢这项工作吗

SELECT @rownum := @rownum +1 `rank`,
       T.*
  FROM TestTable T,
       ( SELECT @rownum :=0 ) T
 ORDER BY `rank` DESC 

你喜欢这个工作吗

SELECT @rownum := @rownum +1 `rank`,
       T.*
  FROM TestTable T,
       ( SELECT @rownum :=0 ) T
 ORDER BY `rank` DESC 

听起来您想使用自定义排序顺序进行排序。我想到了两种方法:1)将排序顺序放在表中,并在查询中使用该表;2) 使用带分隔符的字符串(假设域中的值数量小、稳定,且值的宽度类似且“窄”)

请原谅SQL Server语法过于标准,希望您能大致了解:

e、 g.1

WITH MyTable (ID, data_col)
     AS
     (
      SELECT ID, data_col
        FROM (
              VALUES (1, 'aa'), 
                     (2, '111'), 
                     (3, 'ccc'), 
                     (4, 'bbb'), 
                     (5, '111'), 
                     (6, 'aa'), 
                     (7, '111'), 
                     (8, 'bbb')
             ) AS MyTable (ID, data_col)
     ), 
     MyDomainWithSortOrder (domain_col, sort_seq)
     AS
     (
      SELECT ID, domain_col
        FROM (
              VALUES ('bbb', 1), 
                     ('111', 2), 
                     ('aa', 3), 
                     ('ccc', 4)
             ) AS MyDomainWithSortOrder (ID, domain_col)
     )
SELECT T1.ID, T1.data_col, D1.sort_seq
  FROM MyTable AS T1
       INNER JOIN MyDomainWithSortOrder AS D1
          ON T1.data_col = D1.domain_col
 ORDER 
    BY sort_seq;
e、 g.2

WITH MyTable (ID, data_col)
     AS
     (
      SELECT ID, data_col
        FROM (
              VALUES (1, 'aa'), 
                     (2, '111'), 
                     (3, 'ccc'), 
                     (4, 'bbb'), 
                     (5, '111'), 
                     (6, 'aa'), 
                     (7, '111'), 
                     (8, 'bbb')
             ) AS MyTable (ID, data_col)
     )
SELECT ID, data_col
  FROM MyTable
 ORDER 
    BY CHARINDEX(CAST(data_col + ' ' AS CHAR(3)), 'bbb111aa ccc');

听起来您想使用自定义排序顺序进行排序。我想到了两种方法:1)将排序顺序放在表中,并在查询中使用该表;2) 使用带分隔符的字符串(假设域中的值数量小、稳定,且值的宽度类似且“窄”)

请原谅SQL Server语法过于标准,希望您能大致了解:

e、 g.1

WITH MyTable (ID, data_col)
     AS
     (
      SELECT ID, data_col
        FROM (
              VALUES (1, 'aa'), 
                     (2, '111'), 
                     (3, 'ccc'), 
                     (4, 'bbb'), 
                     (5, '111'), 
                     (6, 'aa'), 
                     (7, '111'), 
                     (8, 'bbb')
             ) AS MyTable (ID, data_col)
     ), 
     MyDomainWithSortOrder (domain_col, sort_seq)
     AS
     (
      SELECT ID, domain_col
        FROM (
              VALUES ('bbb', 1), 
                     ('111', 2), 
                     ('aa', 3), 
                     ('ccc', 4)
             ) AS MyDomainWithSortOrder (ID, domain_col)
     )
SELECT T1.ID, T1.data_col, D1.sort_seq
  FROM MyTable AS T1
       INNER JOIN MyDomainWithSortOrder AS D1
          ON T1.data_col = D1.domain_col
 ORDER 
    BY sort_seq;
e、 g.2

WITH MyTable (ID, data_col)
     AS
     (
      SELECT ID, data_col
        FROM (
              VALUES (1, 'aa'), 
                     (2, '111'), 
                     (3, 'ccc'), 
                     (4, 'bbb'), 
                     (5, '111'), 
                     (6, 'aa'), 
                     (7, '111'), 
                     (8, 'bbb')
             ) AS MyTable (ID, data_col)
     )
SELECT ID, data_col
  FROM MyTable
 ORDER 
    BY CHARINDEX(CAST(data_col + ' ' AS CHAR(3)), 'bbb111aa ccc');

+1似乎是唯一的方法,它不可能将自定义排序提供程序注入到SQL中-因此无法在相关列上实现目标排序。还有其他想法吗?我没有“订单字段”,也不想为订单添加一个自动增量字段。你必须这样做,Zenofo。除非有order by子句,否则任何select语句的结果顺序都是未定义的,为此,您需要将“正确”顺序存储在某个地方。@Zenofo,您需要了解,不使用
order by
时获得的默认顺序是不保证的,所以你不能将其倒置。但是如果我们有应用程序级生成的主键,而没有
自动增量
列,那该怎么办?+1似乎是唯一的方法,它不可能将自定义排序提供程序注入到SQL中-因此无法在相关列上实现目标排序。还有其他想法吗?我没有“订单字段”,也不想为订单添加一个自动增量字段。你必须这样做,Zenofo。除非有order by子句,否则任何select语句的结果顺序都是未定义的,为此,您需要将“正确”顺序存储在某个地方。@Zenofo,您需要了解,不使用
order by
时获得的默认顺序是不保证的,所以你不能反转它。但是如果我们有应用程序级生成的主键,而没有
自动增量
列,那该怎么办呢?最好解释,最好解释