0

我有一个number_color_style结构如下所示的表。

表结构

该表包含如下数据(8行)

表数据

我输出时想要的是所有记录分组number_color_idnumber_style_id

我试过下面的查询

SELECT *
FROM `number_color_style`
GROUP BY `number_color_id` , `number_style_id`

它给了我输出,但缺少一些行

结果

我想要的是四组数据而不会丢失一行(应该包含所有 8 行)。例如:

  • 第一组在哪里number_color_id = 1number_style_id = 1
  • 第二组在哪里number_color_id = 1number_style_id = 2
  • 第三组在哪里number_color_id = 2number_style_id = 1
  • 第四组在哪里number_color_id = 2number_style_id = 2

我该怎么做 ?

创建表查询

CREATE TABLE IF NOT EXISTS `number_color_style` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `img` varchar(100) NOT NULL,
  `number_color_id` int(11) NOT NULL,
  `number_style_id` int(11) NOT NULL,
  `number_id` int(11) NOT NULL,
  PRIMARY KEY (`id`)
);

一些样本数据

INSERT INTO `jink`.`number_color_style` (`id`, `img`, `number_color_id`, `number_style_id`, `number_id`) VALUES (NULL, 'img1.png', '1', '1', '10'), (NULL, 'img2.png', '1', '1', '10'), (NULL, 'img3.png', '1', '2', '10'), (NULL, 'img4.png', '2', '1', '10'), (NULL, 'img5.png', '2', '1', '10');

谢谢

4

2 回答 2

3

如果要根据 number_color_id 和 number_style_id 显示所有 8 个集合,应该使用 order by 而不是 group by。

SELECT *
FROM `number_color_style`
ORDER BY `number_color_id` , `number_style_id`
于 2012-10-19T05:41:06.390 回答
1

使用'group by'时需要一个聚合函数,例如count(*)。可能是您将“分组依据”与“排序依据”混淆了。

一种可能的查询是:

select number_color_id, number_style_id, count (*)
from number_color_style
group by number_color_id, number_style_id

但我认为你想要

select *
from number_color_style
order by number_color_id, number_style_id
于 2012-10-19T05:41:54.533 回答