"Есть ли способ в MySQL перевернуть логическое поле с одним запросом?"

 UPDATE users SET `authorised` = IF (`authorised`, 0, 1) 
 UPDATE `users` SET `authorised` = NOT `authorised` WHERE id = 2 

Этот запрос также будет работать, чтобы свести на нет поле, и является более встроенным с булевым синтаксисом.

Существует несколько способов сделать это, вот простой:

 UPDATE users SET authorised = ABS(authorised - 1) WHERE id = 2; 

Его также можно использовать XOR, если ваше поле «boolean» реализовано как TINYINT:

 UPDATE users SET authorised = authorised XOR 1 WHERE id = 2; 

Это установит «авторизован» на 0, если в настоящее время 1, и 1, если в настоящее время 0. Он также будет обнулять все ненулевые значения, поэтому это идеальное решение, если вы (как я) используете несколько положительных значений, чтобы отразить множество " на 'уровнях, но всегда нужно вернуться к 0, когда «выключено».