Sim. O problema que você tem é que o status de saída de um pipeline é o status de saída do último elemento no pipeline.
Para versões recentes do bash, você pode usar o array PIPESTATUS e escrever
mysqlcommand 2>&1 | grep -v ...
if [ ${PIPESTATUS[0]} -eq 0 ] ; then
printf "true\n"
return 0
else
...
Mais soluções portáteis existem. Você pode correr
( mysqlcommand ; echo $? > lastsqlret ;) 2>&1 | grep ...
if grep '^0$' lastsqlret ; then
...
usando um arquivo temporário e você pode evitar o arquivo temporário usando a manipulação do descritor de arquivo.