我有一个包含不同类别的数据库表,其中包含不同的产品,每个类别都有一些优先级。假设 cat-1 有 5 个产品,cat-2 包含 3 个产品,cat-3 包含 3 个产品,cat-4 包含 2 个产品。
在展示产品时,顺序应如下所示。
如果类别具有相同的优先级(假设 cat-1、cat-2 优先级 = 1、cat-3 优先级 = 2、cat-4 优先级 = NULL),则产品将显示如下。
c1p1,c2p1,c1p2,c2p2,c1p3,c2p3,c1p4,c1p5,c3p1,c3p2,c3p3,c4p1,c4p2。
如果类别具有相同的优先级(假设 cat-1、cat-2 优先级 = 1、cat-3 和 cat-4 优先级 = 2),则产品将显示如下。
c1p1,c2p1,c1p2,c2p2,c1p3,c2p3,c1p4,c1p5,c3p1,c4p1,c3p2,c4p2,c3p3。
如果类别具有不同的优先级(假设 cat-1 priority = 2、cat-2 priority = 1、cat-3 priority = 3 和 cat-4 priority = Null),则产品将显示如下。
c2p1,c2p2,c2p3,c1p1,c1p2,c1p3,c1p4,c1p5,c3p1,c3p2,c3p3,c4p1,c4p2。
这里 c = 类别和 p = 产品。
在Mysql中可以进行这种类型的排序吗?请帮忙。
这是数据库表的结构和示例数据-
CREATE TABLE IF NOT EXISTS `categories` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`priority` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ;
INSERT INTO `categories` (`id`, `name`, `priority`) VALUES
(1, 'c1', 1),
(2, 'c2', 1),
(3, 'c3', 2),
(4, 'c4', NULL);
CREATE TABLE IF NOT EXISTS `products` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`category_id` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ;
INSERT INTO `products` (`id`, `category_id`, `name`) VALUES
(1, 1, 'c1p1'),
(2, 1, 'c1p2'),
(3, 1, 'c1p3'),
(4, 1, 'c1p4'),
(5, 1, 'c1p5'),
(6, 2, 'c2p1'),
(7, 2, 'c2p2'),
(8, 2, 'c2p3'),
(9, 3, 'c3p1'),
(10, 3, 'c3p2'),
(11, 3, 'c3p3'),
(12, 4, 'c4p1'),
(13, 4, 'c4p2');