Mysql 查询连续三条小于1且不包含id的记录
时间: 2024-05-06 18:18:19 浏览: 134
可以使用如下的 SQL 语句来查询连续三条小于1且不包含 id 的记录:
```
SELECT t1.*
FROM your_table t1
WHERE t1.value < 1
AND t1.id NOT IN (
SELECT t2.id
FROM your_table t2
WHERE t2.value >= 1
)
AND EXISTS (
SELECT 1
FROM your_table t3
WHERE t3.id = t1.id - 1 AND t3.value < 1
)
AND EXISTS (
SELECT 1
FROM your_table t4
WHERE t4.id = t1.id + 1 AND t4.value < 1
)
```
其中,`your_table` 是你要查询的表名,`value` 是你要筛选的数值列名,`id` 是你要排除的 ID 列名。
这个查询语句的思路是:先找出所有小于 1 的记录,并排除掉包含 id 的记录,然后再通过子查询判断是否存在连续的三条小于 1 的记录。
相关问题
MySQL 没有递增id 查询连续三条小于1的记录
如果 MySQL 没有递增 id ,可以尝试使用其他字段作为顺序标识。假设有一个 `order_num` 字段代表顺序,则可以使用以下 SQL 语句查询连续三条小于 1 的记录:
```
SELECT t1.*
FROM table_name t1
JOIN table_name t2 ON t1.order_num = t2.order_num - 1
JOIN table_name t3 ON t1.order_num = t3.order_num - 2
WHERE t1.col_name < 1 AND t2.col_name < 1 AND t3.col_name < 1;
```
其中 `table_name` 是表名,`col_name` 是需要查询的列名。这个 SQL 语句使用了两次自连接(self-join),以连接三条按顺序相邻的记录。最后通过 WHERE 子句筛选出符合要求的记录。
mysql 查询临时表中连续3条小于1的记录
可以使用子查询和连接,具体操作如下:
```
SELECT t1.*
FROM (
SELECT *
FROM your_temp_table
WHERE value < 1
) t1
JOIN (
SELECT *
FROM your_temp_table
WHERE value < 1
) t2 ON t1.id = t2.id - 1
JOIN (
SELECT *
FROM your_temp_table
WHERE value < 1
) t3 ON t2.id = t3.id - 1;
```
其中,`your_temp_table` 是你的临时表名,`value` 是你要查询的列名,`id` 是你的表中一列唯一标识每一行的列名。
这个查询会先从临时表中选择所有小于1的记录,然后通过自连接找到连续的三行。最后返回这三行的所有列。