Votre requête se traduit par
SELECT * FROM table WHERE id='1' or id='2' or id='3' or id='4';
Il ne renverra que les résultats qui lui correspondent.
Une façon de le résoudre en évitant la complexité serait de changer le type de données en SET
.Ensuite, vous pouvez utiliser, FIND_IN_SET
SELECT * FROM table WHERE FIND_IN_SET('1', id);