I have a table number_color_style with the structure as shown below.

This table contains data as shown below(8 rows)

What I want as I output is All records grouped by number_color_id , number_style_id
I tried below query
SELECT *
FROM `number_color_style`
GROUP BY `number_color_id` , `number_style_id`
It gives me output but some rows are missing

What I want is four set of data without missing a single row(should contain all 8 rows).
EG:
- 1st set where
number_color_id = 1,number_style_id = 1 - 2nd set where
number_color_id = 1,number_style_id = 2 - 3rd set where
number_color_id = 2,number_style_id = 1 - 4th set where
number_color_id = 2,number_style_id = 2
How can I do it ?
Create table query
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`)
);
Some sample data
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');
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.