0

我正在尝试查看是否有一种方法可以让我对表格进行分组和排序,而无需为相同目的开发另一个表格。

我要处理的主要列标题是manufacturer_id, sort_order

在我的sort_order行中,我有几个值,1,2然后其余的有0有没有办法显示第1,2一个然后0per manufacturer_id

结构:

CREATE TABLE IF NOT EXISTS `default_ps_products` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(128) COLLATE utf8_unicode_ci NOT NULL,
  `manufacturer_id` int(11) NOT NULL DEFAULT '0',
  `description` text COLLATE utf8_unicode_ci NOT NULL,
  `youtube` char(30) COLLATE utf8_unicode_ci NOT NULL,
  `active` tinyint(1) NOT NULL DEFAULT '0',
  `on_special` tinyint(1) NOT NULL DEFAULT '0',
  `sort_order` int(3) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=90 ;
4

1 回答 1

1

更新2

SELECT *
  FROM default_ps_products p
 ORDER BY manufacturer_id, 
          FIELD(COALESCE(sort_order, 0), 0),
          COALESCE(sort_order, 0)

样本输出:

| 身份证 | MANUFACTURER_ID | 排序订单 |
-------------------------------------
| 2 | 1 | 1 |
| 4 | 1 | 1 |
| 3 | 1 | 2 |
| 1 | 1 | 0 |
| 5 | 1 | (空) |
| 8 | 2 | 1 |
| 7 | 2 | 2 |
| 9 | 2 | 0 |
| 6 | 2 | 0 |
| 10 | 2 | (空) |

这是SQLFiddle演示

于 2013-06-09T06:32:55.173 回答