0

number_color_style以下に示すような構造のテーブルがあります。

テーブル構造

このテーブルには、以下に示すデータが含まれています (8 行)。

表データ

私が出力したいのはnumber_color_id、によってグループ化されたすべてのレコードです。number_style_id

以下のクエリを試しました

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

出力は得られますが、一部の行が欠落しています

結果

私が欲しいのは、1行も欠落することなく4セットのデータです(8行すべてが含まれている必要があります)。例えば:

  • 1セット目number_color_id = 1number_style_id = 1
  • number_color_id = 12 番目のセットnumber_style_id = 2
  • 3セット目number_color_id = 2number_style_id = 1
  • 4セット目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

If you want to display all 8 set according to number_color_id and number_style_id, should use order by instead of group by.

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

You need an aggregate function when you use 'group by', such as count (*). It might be that you are confusing 'group by' with 'order by'.

One possible query would be:

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

But I think that you want

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