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 tab1 (
`id` INTEGER,
`cluster_id` int,
`user_id` INTEGER,
`name` VARCHAR(20)
);


INSERT INTO tab1
(`id`, `cluster_id`, `user_id`, `name`)
VALUES
('1', '1', '1', 'test name'),
('2', '1', '3', 'other'),
('3', null, '1', 'one more'),
('4', '2', '1', 'foo'),
('5', null, '1', 'bar'),
('6', '1', '1', 'baz');
SELECT * FROM tab1 WHERE `id` IN (SELECT MIN(`id`) FROM tab1 GROUP BY `cluster_id`,`user_id`)
UNION
SELECT * FROM tab1 WHERE `cluster_id` IS NULL
id cluster_id user_id name
1 1 1 test name
2 1 3 other
3 null 1 one more
4 2 1 foo
5 null 1 bar
SELECT * FROM tab1 WHERE `id` IN (SELECT MIN(`id`) FROM tab1 WHERE `cluster_id` IS NOT NULL GROUP BY `cluster_id`,`user_id`)
UNION
SELECT * FROM tab1 WHERE `cluster_id` IS NULL
id cluster_id user_id name
1 1 1 test name
2 1 3 other
4 2 1 foo
3 null 1 one more
5 null 1 bar
SELECT * FROM tab1 WHERE `id` IN (SELECT MIN(`id`) FROM tab1 GROUP BY `cluster_id`)
UNION
SELECT * FROM tab1 WHERE `cluster_id` IS NULL
id cluster_id user_id name
1 1 1 test name
3 null 1 one more
4 2 1 foo
5 null 1 bar
SELECT * FROM tab1 WHERE `id` IN (SELECT MIN(`id`) FROM tab1 WHERE `cluster_id` IS NOT NULL GROUP BY `cluster_id`)
UNION
SELECT * FROM tab1 WHERE `cluster_id` IS NULL
id cluster_id user_id name
1 1 1 test name
4 2 1 foo
3 null 1 one more
5 null 1 bar