I want to select the distinct IDs (which is associated with multiple rows) that DOESN\'T have any rows where VAL = \'current\'.
For example, in a table like this:
You can use having
SELECT
id,
count(*) as Total
FROM table
WHERE val <> 'current'
HAVING Total > 0
Output
| ID | TOTAL |
|----|-------|
| 23 | 5 |
Fiddle
SELECT DISTINCT id
FROM table
WHERE id NOT IN (SELECT id
FROM table
WHERE val = 'current')
or:
SELECT a.id
FROM table a
LEFT JOIN table b ON a.id = b.id AND b.val = 'current'
WHERE b.id IS NULL
If you want to use Having Clause then use like this
SELECT
id,
count(*) as Total
FROM Status S1
WHERE val <> 'current'
GROUP BY id
HAVING count(*) = (SELECT COUNT(*) FROM Status S2 WHERE S2.id = S1.id)