By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE product_attributes
(`Id` int, `product_id` int, `product_name` varchar(3), `size` varchar(2), `stock` int)
;
INSERT INTO product_attributes
(`Id`, `product_id`, `product_name`, `size`, `stock`)
VALUES
(1, 1, 'XYZ', 'S', 2),
(2, 1, 'XYZ', 'M', 0),
(3, 1, 'XYZ', 'L', 3),
(8, 1, 'XYZ', 'XL', 3),
(4, 2, 'ABC', 'S', 1),
(5, 2, 'ABC', 'M', 1),
(6, 2, 'ABC', 'L', 1),
(7, 2, 'ABC', 'XL', 0)
Records: 8 Duplicates: 0 Warnings: 0
SELECT product_id, product_name
FROM product_attributes
WHERE size in ('S', 'M', 'L')
GROUP BY product_id, product_name
ORDER BY COUNT(*) = SUM(stock > 0) DESC
product_id | product_name |
---|---|
2 | ABC |
1 | XYZ |