add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE category_product (`category_id` INTEGER, `product_id` INTEGER);

INSERT INTO category_product (`category_id`, `product_id`) VALUES
('3', '9'),
('3', '28'),
('3', '100'),
('7', '13'),
('7', '21'),
('7', '81'),
('7', '100'),
('25', '22'),
('25', '28'),
('25', '100');
SELECT cp.category_id, COUNT(*) counter
FROM category_product cp
WHERE NOT EXISTS (SELECT 1 FROM category_product WHERE product_id = cp.product_id AND category_id <> cp.category_id)
GROUP BY cp.category_id
category_id counter
3 1
7 3
25 1
SELECT category_id, COUNT(*) counter
FROM category_product
WHERE product_id IN (
SELECT product_id
FROM category_product
GROUP BY product_id
HAVING COUNT(*) = 1
)
GROUP BY category_id
category_id counter
3 1
7 3
25 1