В вашем запросе вы не назначаете правильное сравнение в предложении where (например: where t.col1 = 10
) .. поэтому условие where пытается вычислить приведение к значению в столбцах, упомянутых как boolen
в этом случае различный результат просто основан на различном приведении к логическому типу каждого типа
, если вы запускаете запрос, основанный на целочисленном возвращении, всегда действительный истинный результат, так что вы получите все строки в других со строкой, зависящей отдля каждого строкового значения это не может привести к появлению ни одной строки, частичной строки или всех строк. попробуйте посмотреть результат для приведения вашего столбца в логических
SELECT if(t.col1, true, false)
FROM table t
WHERE t.col1
и
SELECT if( t.col1 AND t.col2, true,false)
FROM table t
WHERE t.col1 AND t.col2