【问题标题】:How to do Custom Order in Mysql如何在 Mysql 中进行自定义订单
【发布时间】:2015-01-02 10:50:33
【问题描述】:

下面是我的专栏

1-1
1-2
2-1
2-4

是否可以以这种方式排序 - 第一列应该是升序,第二列应该是降序

所以结果会是

1-4
1-2
2-1
2-1

我不在乎行是否不匹配。我怎样才能实现这一点(类似于视图)

CREATE TABLE IF NOT EXISTS `pipo_orders` (
      `ClientID` int(8) NOT NULL,
      `created_at` datetime NOT NULL,
      `updated_at` timestamp NOT NULL DEFAULT ,
    );

--
-- Dumping data for table `pipo_orders`
--

INSERT INTO `pipo_orders` (`ClientID`, `created_at`, `updated_at`) VALUES
(17, '2014-11-26 16:21:36', '2014-11-26 10:51:36'),
(17, '2014-11-26 16:46:24', '2014-11-26 11:16:24'),
(17, '2014-12-04 16:45:28', '2014-12-04 11:15:28'),
(17, '2014-12-26 12:58:13', '2014-12-26 07:28:13'),
(17, '2014-12-30 14:29:31', '2014-12-30 08:59:31'),
(17, '2014-12-30 14:31:05', '2014-12-30 09:01:05'),
(17, '2015-01-02 12:20:54', '2015-01-02 06:50:54');

【问题讨论】:

  • 没关系。我只想进行排序或检查下表
  • 这不是数据库用于对不相关的相关数据进行排序的目的。但是,当您真的想这样做时,您可以创建临时表,读取第一个 tmp 表 asc 和 auto_increment 中的 auto_increment、create_at 和 clientId,第二个表 desc 中的 updated_at 和 clientId,并在 auto_increment 上进行选择。这将帮助您破坏相关数据库表的逻辑

标签: php mysql sql


【解决方案1】:

如果这是你想要的,那就太奇怪了,我想不出你想要它的理由。事实上,它违背了数据库的基本逻辑...... 尽管如此:

SELECT       t1.ClientID
,            t1.created_at
,            t2.updated_at
FROM         pipo_orders t1
JOIN         pipo_orders t2
       ON    1 = 1
ORDER BY     t1.created_at ASC
,            t2.update_at DESC

【讨论】:

    【解决方案2】:

    这看起来是一件可怕的事情。 created_at 和 updated_at 值通过位于同一行中而相关联。您覆盖此关系并连接完全不相关的值。

    但是,从技术上讲,您必须分别对两列进行排序(给它们行号),然后再次加入它们:

    select
      col1.created_at,
      col2.updated_at
    from
    (
      select created_at, @rn1 := @rn1 + 1 as rownum 
      from pipo_orders po
      cross join (select @rn1 := 0) as r
      order by created_at
    ) as col1
    from
    (
      select updated_at, @rn2 := @rn2 + 1 as rownum 
      from pipo_orders po
      cross join (select @rn2 := 0) as r
      order by updated_at desc
    ) as col2 using (rownum)
    order by rownum;
    

    【讨论】:

      猜你喜欢
      • 2022-10-21
      • 2011-04-05
      • 2021-04-24
      • 2014-08-13
      • 1970-01-01
      • 1970-01-01
      • 2021-07-24
      • 2018-04-16
      相关资源
      最近更新 更多