Ihre Abfrage wird übersetzt in
SELECT * FROM table WHERE id='1' or id='2' or id='3' or id='4';
Es werden nur die passenden Ergebnisse zurückgegeben.
Eine Möglichkeit, dies zu lösen und die Komplexität zu vermeiden, wäre, den Datentyp auf SET
zu ändern . Dann könnten Sie FIND_IN_SET verwenden
SELECT * FROM table WHERE FIND_IN_SET('1', id);