Это работает:
select a.id, a.name, a.date, a.callValue
FROM
(
select @r0 := @r0 + 1 as rownum, id, name, date, callValue from TABLE
, (SELECT @r0 := 0) r0
) a,
(
select @r1 := @r1 + 1 rownum, id, name, date, callValue from TABLE
, (SELECT @r1 := 0) r1
) b
where b.callValue = val3 and b.rownum between (a.rownum-1 and a.rownum+1)
Это расширяет таблицу на 2 измерения, так что вы можете сравнить строки в первой таблице с любым набором строк из второго.