【问题标题】:MySQL specialized delete criteriaMySQL 专门的删除条件
【发布时间】:2013-09-05 14:29:33
【问题描述】:

当其中一个重复项满足最低要求 (x

+------+-------+------------+----+
| id   | block | repitition | 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          | 12 |  
| 6238 | 2     | 4          | 21 |
| 7575 | 1     | 3          | 13 |
| 7575 | 1     | 4          | 21 |
| 7575 | 1     | 5          | 21 |
+------+-------+------------+----+

我已经在这方面得到了以下帮助:

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

这很完美。我想知道的是我是否可以做完全相同的事情,但前提是 x

因此我想查询该表并让它只删除第 4、5、10、11、12 行。当前公式还将删除第 6、7、8 和 9 行。

【问题讨论】:

    标签: mysql inner-join sql-delete


    【解决方案1】:
    delete t4
    from your_table t4
    inner join
      (select id,block From YourTable t1
        inner join 
        (  
           select id,block,min(repitition) as FirstRepitition 
           From YourTable Group By id,Block 
        ) t2
        On t1.id = t2.id and t1.block = t2.block 
        and t1.Repitition = t2.FirstRepition and t1.x < 15
      ) t3 
      On t4.id = t3.id and t4.block = t3.block
    

    将是一种方式。找到最早的重复,得到 x

    【讨论】:

    • 非常感谢托尼·霍普金森!这是完美的!
    猜你喜欢
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 2020-11-20
    • 2021-01-22
    相关资源
    最近更新 更多