To logiczna operacja na zbiorach gdzie coś się zawiera w całym zbiorze lub nie, tak więc jeżeli się ciągiem logicznym w sytuacji zawarcia w zborze wskazanych liczb zawiera dana liczba a suma kontrolna lub cały ciąg znaków już nie zawiera dla analogicznego zapytania to z całym szacunkiem ale to uznaję jako błąd twórców MySQL.
OR tutaj zmienia sytuację, choć zbiór logiczny typu IN powinien wskazywać na zawarcie logiczne występowania w zbiorze tylko i wyłącznie w zbiorze a nie poza zbiorem i to ŁACZNE, ale dalej jest to błędne działanie MySQL gdyż podaje tylko zawsze to co występuje w ostatniej pozycji więc typuje nam zbiór ID gdzie występuje B a nie A dla zapytania IN ('A','B')
Spoko to łamigłówka przedszkola tygodnia o ile nie miesiąca. Kilka głów już nad tym myślało

To tylko dwie kolumny i 9 linii.
ID|VALUE
1|a
1|b
1|c
2|a
2|b
3|a
3|b
3|c
4|z
I teraz select takie ID gdzie Value = a, b, c (jednocześnie)
Po grupowaniu po ID odpowiedź pytona działa ale to jednak jak powiedział Nospr jest OR więc lipa.
IN TO ZAWARCIE W GRUPIE, czyli jako OR jak powiedział Nospr. To prawda i o ile występuje to na zbiorze liczb które nie mają ze sobą relacji i jest ok, to na zbiorze relatywnym od id to już nie działa i jest zwykłym OR.
Zbiór relatywny to już w tym przypadku będzie cięzko w jednym zapytaniu MySQL.
Select `id` from `table` where `value` IN ('a','b') jest jakimś pierwszym członem i teraz by trzeba więc jakoś to posortować gdyż `ID` powinny się powtarzać po 2 dla tych które są w 'a' i 'b' tak aby podać najpierw te id które są po dwa razy.