MySQL не ви дава фалшив резултат, той просто използва различна реализация на модул, отколкото очаквате. За съжаление терминът модул изглежда е дефиниран донякъде двусмислено и прилагането му варира от език на език. От това, което мога да кажа в Уикипедия на Modulo , внедряването на MySQL използва съкратено деление :
r = a - n * trunc(a / n)
Където очаквате внедряването да използва подово разделение :
r = a - n * floor(a / n)
Тъй като по този начин приложихте първото си решение, бих казал, че това е може би най-добрата алтернатива на Mod
оператор.
От това, което видях (а това е много бърз ненаучен анализ!), изглежда, че по-императивните езици за програмиране прилагат съкратено разделение и по-функционалните математически езици изглежда използват деление на етажи .