我想基于ORDER BY字段在MySQL查询中输出行分组标题。不知道如何解释这一点,所以最好只展示我想要完成的一个例子。
SELECT * FROM products_table
ORDER BY Category, Description
Prod_num Category Description Price
type_1
00001 type_1 Prod 1 $1
00002 type_1 Prod 2 $2
00003 type_1 Prod 3 $3
00004 type_1 Prod 4 $4
00005 type_1 Prod 5 $5
type_2
00006 type_2 Prod 6 $6
00007 type_2 Prod 7 $7
00008 type_2 Prod 8 $8
00009 type_2 Prod 9 $9
type_3
00010 type_3 Prod 10 $10
00011 type_3 Prod 11 $11
我希望在显示具有该类别的所有产品之前,将类别字段显示为行标题。我想我已经看到这个发布在某个地方,但经过大量的搜索后仍无法弄清楚如何去做主要是因为我认为我没有使用正确的术语。
答案 0 :(得分:2)
我坚信,这应该在您的代码的演示方面完成,但是,这是我过去使用GROUP BY
和WITH ROLLUP
看到它的方式:
SELECT Category,
IFNULL(prod_num,'') Prod_Num,
IFNULL(description,'') Description,
IFNULL(price,'') Price
FROM
(
SELECT *
FROM Products_Table
GROUP BY Category,Prod_num,Description,Price
WITH ROLLUP
) AS X
WHERE Category IS NOT NULL
AND (
(Prod_num IS NOT NULL AND Description IS NOT NULL AND Price IS NOT NULL)
OR
(Prod_num IS NULL AND Description IS NULL AND Price IS NULL)
)
ORDER BY Category,Prod_num,Description,Price
这并不是你所要求的100%,因为它将“类别”列放在第一位 - 我还没有玩过它,看看是否可以改变它。
结果如下:
CATEGORY PROD_NUM DESCRIPTION PRICE
type_1
type_1 00001 Prod 1 $1
type_1 00002 Prod 2 $2
type_2
type_2 00003 Prod 3 $3
type_2 00004 Prod 4 $4
type_2 00005 Prod 5 $5
type_3
type_3 00006 Prod 6 $6
示例Fiddle。
http://dev.mysql.com/doc/refman/5.0/en/group-by-modifiers.html