MySQL:按组获取项目

时间:2017-07-06 10:04:34

标签: mysql

我有这样的表:

_______________________________________________
| item_id  | group_id | item_name  | quantity |
-----------------------------------------------
|        1 | 0001     |   cup_1    |        5 |
-----------------------------------------------
|        2 | 0001     |   cup_2    |        3 |
-----------------------------------------------
|        3 | 0002     |   spoon_1  |        2 |
-----------------------------------------------
|        4 | 0002     |   spoon_2  |        2 |
-----------------------------------------------
|        5 | 0003     |   table_1  |        6 |
-----------------------------------------------
|        6 | 0004     |   table_2  |        7 |
-----------------------------------------------
|        7 | 0004     |   table_3  |        1 |
-----------------------------------------------
|        8 | 0005     |   chair_1  |        5 |
-----------------------------------------------
|        9 | 0005     |   chair_2  |        4 |
-----------------------------------------------

我需要向用户显示此表中的20个项目,但具有相同group_id的项目应分组为一个。 所以cup_1和cup_2就像一个项目。 问题是组中可能有任意数量的项目。 所以实际上我需要显示20组项目。

我尝试使用“group by”语句,但在这种情况下它不起作用

我怎么能撰写这样的查询?

谢谢!

UPD。 我正试图在第一个'n'组中获取项目(或下一个'n'组 - 这是目录)。 结果应该像上一张表格一样。 例如:

SELECT * FROM my_table ... LIMIT 1,2

_______________________________________________
| item_id  | group_id | item_name  | quantity |
-----------------------------------------------
|        3 | 0002     |   spoon_1  |        2 |
-----------------------------------------------
|        4 | 0002     |   spoon_2  |        2 |
-----------------------------------------------
|        5 | 0003     |   table_1  |        6 |
-----------------------------------------------

仅限前两组

SELECT * FROM my_table ... LIMIT 3,2 - 接下来的两组等等:

_______________________________________________
| item_id  | group_id | item_name  | quantity |
-----------------------------------------------
|        6 | 0004     |   table_2  |        7 |
-----------------------------------------------
|        7 | 0004     |   table_3  |        1 |
-----------------------------------------------
|        8 | 0005     |   chair_1  |        5 |
-----------------------------------------------
|        9 | 0005     |   chair_2  |        4 |
-----------------------------------------------

引擎:MyISAM

1 个答案:

答案 0 :(得分:0)

尝试使用Coalesce function

SELECT 
    Coalesce(item_id,0) as item_id, 
    group_id, 
    Coalesce(item_name,0) as item_name, 
    Coalesce(quantity,0) as quantity
FROM my_table
GROUP by group_id
顺便说一句,在MySQL中,这也可行:

SELECT *
FROM my_table
GROUP by group_id