У меня есть таблица, которая выглядит примерно так:
ID A B C
1 'jack' 10 '12'
2 'steve' 0 '20'
3 'jack' 20 '13'
4 'jack' 20 '12 *'
5 'steve' 5 '30 *'
Теперь я хочу выбрать одну строку, соответствующую следующим условиям:
- A = @A
- B = @ B
- В случае, если условие № 2 не может быть выполнено: C LIKE '% *'
Пример 1:
@A = 'jack'
@B = '10'
Строки 1, 3 и 4 соответствуют условию # 1. Строка 1 также соответствует условию # 2, поэтому строка возвращается.
Пример 2:
@A = 'steve'
@B = '10'
Строки 2 и 5 соответствуют условию # 1. Ни один из них не соответствует условию №2, но строка 5 соответствует условию №3, поэтому строка возвращается.
Пока у меня есть SQL оператор, который работает:
select * from table where A='steve' and (B='10' or C like '%*') limit 1
Проблема с этим решением заключается в том, что я не уверен, какой заказ B='10' or C like '%*'
выполнен. Если они всегда выполняются слева направо, то это будет работать. Но если по какой-то причине это не всегда так, то условие № 3 (C like '%*'
) может быть выполнено до условия № 2 (B='10'
), что приведет к возвращению неправильной строки.
Как можно Я уверен, что мои условия всегда выполняются в правильном порядке?