есть таблица слов с хешами
word,hash:
...
вицеспикер, fgeuw5890
вицепрезидент, asjfkl34
Вицин, gfasw1p2
вицеконсул, q3i4pfas
вицеанин, air9020
...
что будет в @a и @b, если сделать:
SET @a=0;
SET @b=0;
вариант 1:
SELECT *
FROM
`words`
WHERE
(`word` LIKE "виц%" AND @a:=@a+1) OR (`hash`='q3i4pfas' AND @b:=@b+1)
вариант 2:
SELECT *
FROM
`words`
WHERE
(`word`="вицеконсул" AND @a:=`word`) OR (`hash`='q3i4pfas' AND @b:=`hash`)
результат:
вариант 1: @a=5,@b=1
вариант 2: @a="вицеконсул",@b="q3i4pfas"
WTF?? зачем выполняется вторая часто OR-а, если найдена первая?
ещё вариант 3: намеренно делаем в первой части ошибку
SELECT *
FROM
`words`
WHERE
(`word`="ошибочное123" AND @a:=`word`) OR (`hash`='q3i4pfas' AND @b:=`hash`)
Будет правильный результат: @a=0,@b="q3i4pfas".