是否有一种不那么蛮力的方法来完成这样的事情:
SELECT
COUNT(b.id),
COUNT(
IF(
phone = '1111111111'
OR phone = '22222222222'
....
OR phone = '9999999999', 1, NULL))
FROM table
WHERE created >= DATE_SUB(NOW(), INTERVAL 90 DAY);
更新
理想情况下,我实际上能够检测到以下任何情况:
4444
4444444444
1111111111
9999999999
99999
因此,在同一字段中重复相同数字至少4次的任何实例。
最佳答案
de ja vu?也许去年有人问过这个问题。
SUM(RLIKE '0{4}|1{4}|2{4}|3{4}|4{4}|5{4}|6{4}|7{4}|8{4}|9{4}')
将计算多少位数重复4次或更多次。 (请注意,使用
SUM
代替COUNT
。这是可行的,因为RLIKE
将返回1表示true或0表示false。)例:
mysql> SELECT '88888822222' RLIKE '0{4}|1{4}|2{4}|3{4}|4{4}|5{4}|6{4}|7{4}|8{4}|9{4}';
+-------------------------------------------------------------------------+
| '88888822222' RLIKE '0{4}|1{4}|2{4}|3{4}|4{4}|5{4}|6{4}|7{4}|8{4}|9{4}' |
+-------------------------------------------------------------------------+
| 1 |
+-------------------------------------------------------------------------+