Ok, so I found a way to make this work which seems excessive. I worked it out with a DB admin to try and figure this out because it was not working when it should have. Maybe it's just a MECM quirk regarding it.
Doing a one-by-one subselect of my criteria worked. So if I had a field that contained four groups, and multiple computers have varying combinations of those values, and I wanted to select certain criteria I had to do this:
SELECT <criteria> FROM SMS_R_System WHERE SecurityGroupName LIKE %Group1%
AND
SMS_R_Sytstem.ResourceID IN (SELECT Select ResourceID FROM SMS_RSystem WHERE SecurityGroupName LIKE %Group3%)
AND
SMS_R_Sytstem.ResourceID NOT IN (SELECT Select ResourceID FROM SMS_RSystem WHERE SecurityGroupName LIKE %Group2%)
AND
SMS_R_Sytstem.ResourceID NOT IN (SELECT Select ResourceID FROM SMS_RSystem WHERE SecurityGroupName LIKE %Group3%)
I'm sure there is a way to make this work without having to iteratively filter the returned data but this at least got me the end result without a long duration for my query. As well as me being able to shift the group names in the structure, and flipping the NOT IN to IN to include/disinclude items for other collections