我有一个带有赔率和平均值的数据库,我需要删除包含4,5或6个连续数字的所有行,例如需要删除行ID 3,5和6并保留行ID 1,2和4
-------------------------------
| e1 | e2 | e3 | e4 | o1 | o2 |
-------------------------------
| 2 | 4 | 6 | 8 | 3 | 11 |
-------------------------------
| 2 | 6 | 28 | 40 | 15 | 39 |
-------------------------------
| 22 | 24 | 30 | 38 | 21 | 23 |
-------------------------------
| 2 | 8 | 26 | 34 | 19 | 33 |
-------------------------------
| 2 | 4 | 6 | 16 | 3 | 5 |
-------------------------------
| 16 | 18 | 20 | 22 | 17 | 19 |
-------------------------------
包含3个以上连续数字的行
第3行 - 21,22,23,24
第5行 - 2,3,4,5,6第6行 - 16,17,18,19,20
这是我尝试过的,但它不起作用
WHERE ABS(e1-o1) = 1 AND ABS(e1-o2) = 1 AND ABS(e2-o1) = 1 AND ABS(e2-o2) = 1 OR ABS(e3-o1) = 1 OR ABS(e3-o2) = 1 OR ABS(e4-o1) = 1 OR ABS(e4-o2) = 1
答案 0 :(得分:1)
不使用OR
,而是使用+
。在算术表达式中使用时,TRUE
变为1
,因此这将计算连续对的数量。然后,您可以将其与3
进行比较。
WHERE ( (ABS(e1-o1) = 1) + (ABS(e1-o2) = 1) +
(ABS(e2-o1) = 1) + (ABS(e2-o2) = 1) +
(ABS(e3-o1) = 1) + (ABS(e3-o2) = 1) +
(ABS(e4-o1) = 1) + (ABS(e4-o2) = 1)
) >= 3
AND ABS(o1-o2) = 2
要获得4个连续两个赔率数字,你有三种可能性
Odd Even Odd Even
= 3 Even Odd Even Odd
= 3 Even Odd Even Odd Even
= 4 以上两者的变化