First of all, the title of this question is horrible, but I didn\'t find a better way to describe my issue.
There\'s probably a very easy way to do this, but I couldn\'t
Try this
SELECT * FROM xx WHERE COLOUR = 'GREEN' UNION SELECT * FROM xx WHERE P_Id not in (SELECT P_Id FROM Persons WHERE COLOUR = 'GREEN');
See ALSO SQL FIDDLE DEMO