【发布时间】:2020-03-26 21:49:15
【问题描述】:
我有一个看起来像这样的表:
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') 之前执行,从而导致返回错误的行。
如何确保我的条件始终以正确的顺序执行?
【问题讨论】:
标签: sql sqlite sql-order-by where-clause