0

我想在基于 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

我希望在显示具有该类别的所有产品之前将类别字段显示为行标题。我想我在某处看到过这个帖子,但经过大量搜索后无法弄清楚如何去做,主要是因为我认为我没有使用正确的术语。

4

1 回答 1

2

我坚信这应该在您的代码的演示方面完成,但是,这是我过去使用GROUP BYand看到的方式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

于 2013-02-13T23:34:04.563 回答