我不确定如何表达我的问题,因此我很难找到任何答案。我的数据看起来像这样:
+------+-------+------------+----+
| id | block | repetition | x |
+------+-------+------------+----+
| 5223 | 1 | 1 | 15 |
| 5223 | 1 | 2 | 17 |
| 5223 | 1 | 3 | 16 |
| 5223 | 2 | 1 | 14 |
| 5223 | 2 | 2 | 15 |
| 6238 | 2 | 1 | 18 |
| 6238 | 2 | 2 | 20 |
| 6238 | 2 | 3 | 20 |
| 6238 | 2 | 4 | 21 |
+------+-------+------------+----+
如果我检测到x<
我想查询表以删除整个块(列)。比15(只是一个例子)。在此示例中,它应删除第4行和第5行。
答案 0 :(得分:1)
delete t1
from your_table t1
inner join
(
select id, block
from your_table
group by id, block
having sum(x < 15) > 0
) t2 on t1.id = t2.id and t1.block = t2.block
您可以使用自联接提取要删除的数据。在查询中使用同一个表两次时,您需要使用别名来区分表。这就是我使用t1
和t2
别名的原因。
通过加入,结果(将被删除)将只是与内部联接匹配的记录。