MySQL 行标题基于查询中按字段分组的顺序

标签 mysql sql group-by sql-order-by

我想在基于 ORDER BY 字段的 MySQL 查询中输出行分组 header 。不确定如何解释这一点,因此最好只展示一个我想要完成的任务的示例。

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

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

最佳答案

我坚信这应该在代码的表示端完成,但是,这就是我过去使用 GROUP BYWITH 完成的方式汇总:

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

关于MySQL 行标题基于查询中按字段分组的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14864931/

相关文章:

php - 使用bindValue()的PDO查询方法似乎不起作用

python - 两列中的 pd.groupby sum() 函数不起作用

jquery - 如何编写 MySQL 查询以在保留特定行的 ID 的同时对结果进行分组?

MySQL |我可以将表名存储在不同的表中吗?

mysql - SQL - 连接表

sql - Microsoft T-SQL到Oracle SQL的转换

mysql - MySQL中where条件中运算符的解析顺序是什么(例如: SELF join)

r - 分组因素的条件过滤器 - dplyr

mysql - 如何将数据插入/更新到没有可用 API 的异地数据库?

mysql - 如何仅将数据分配给具有特定角色的用户?