删除表内innerNO对应的SerialNO值不是最大的所有数据


  1. mysql> select * from t2; 
  2. +----+----------+---------+ 
  3. | id | SerialNO | InnerNo | 
  4. +----+----------+---------+ 
  5. |  1 |       19 |      10 |  
  6. |  2 |       16 |      10 |  
  7. |  3 |       99 |      10 |  
  8. |  4 |       17 |      10 |  
  9. |  5 |       53 |      11 |  
  10. |  6 |       67 |      11 |  
  11. |  7 |       89 |      12 |  
  12. +----+----------+---------+ 
  13. 7 rows in set (0.02 sec) 

需求:
这样的表,要删除innerNO对应的SerialNO值不是最大的所有数据。
例如innerNO=10,这个对应SerialNO值是19,16,99,17,只留这4条最大的SerialNO值,其他的都给删了。


  1. mysql> select a.*,b.* from t2 a left join t2 b on a.InnerNO=b.InnerNO where a.SerialNO < b.SerialNO group by a.SerialNO; 
  2. +----+----------+---------+------+----------+---------+ 
  3. | id | SerialNO | InnerNo | id   | SerialNO | InnerNo | 
  4. +----+----------+---------+------+----------+---------+ 
  5. |  2 |       16 |      10 |    1 |       19 |      10 |  
  6. |  4 |       17 |      10 |    1 |       19 |      10 |  
  7. |  1 |       19 |      10 |    3 |       99 |      10 |  
  8. |  5 |       53 |      11 |    6 |       67 |      11 |  
  9. +----+----------+---------+------+----------+---------+ 
  10. 4 rows in set (0.05 sec) 

  1. mysql> delete a from t2 a join t2 b on a.InnerNO=b.InnerNO where a.SerialNO < b.SerialNO ; 
  2. Query OK, 4 rows affected (0.20 sec) 
  3.  
  4. mysql> select * from t2; 
  5. +----+----------+---------+ 
  6. | id | SerialNO | InnerNo | 
  7. +----+----------+---------+ 
  8. |  3 |       99 |      10 |  
  9. |  6 |       67 |      11 |  
  10. |  7 |       89 |      12 |  
  11. +----+----------+---------+ 
  12. 3 rows in set (0.03 sec) 

 

 









本文转自hcymysql51CTO博客,原文链接:http://blog.51cto.com/hcymysql/1040888 ,如需转载请自行联系原作者


上一篇:微软推人人可用的机器学习,打通windows应用程序任督二脉,惠及5000万开发者


下一篇:在Quick BI中如何制作带层次结构的动态地图仪表板