I was surprised that this is not a syntax error:
UPDATE mytable
SET deleted = 1
AND name = 'Cindy'
It doesn't affect the result of the command, is there any use of adding an AND
after a SET
? Or mysqsl will just ignore it?
CodePudding user response:
Because the expression:
1 AND name = 'Cindy'
is a Boolean expression that evaluates to 0
for False
or 1
for True
and the value of this expression will be assigned to the column deleted
, like:
SET deleted = (1 AND (name = 'Cindy'))
CodePudding user response:
The statement takes into account the operators precedence. And the query acts as
UPDATE mytable
SET deleted = (1 AND (name = 'Cindy'))
I.e. firstly the condition name = 'Cindy'
is tested producing TRUE (1), FALSE (0) or NULL.
Then the expression 1 AND {result}
is evaluated.
And finally the result of this expression evaluation is assigned into deleted
column.
If you receive the same result like for
UPDATE mytable
SET deleted = 1
then name
column value is equal to 'Cindy'
using current collation.