Mysql
 sql >> база данни >  >> RDS >> Mysql

изтрий мин. стойности от записи след сравняване на две стойности от таблица в sql

Намерете редовете, които искате да изтриете, с тази заявка:

изберете t0.* от tbl_entso_cdbf t0join tbl_entso_cdbf t1 на t1.Utc =t0.Utc и t1.date =t0.date и t1.area_in =t0.area_out и t1.area_out =t0.area_inwhere t0.value =0 и (t1.value <> 0 или t1.area_in  

Условията са:

  • стойност =0
  • Има друг ред със същия Utc и същата дата но area_in и area_out се превключват.
  • стойността на другия ред не е 0 или area_in е по-малък.

Заявката ще върне следните редове:

<предварителен код>| UTC | дата | площ_в | area_out | стойност ||-------------------|--------------------|----- ----|----------|-------|| 2015-12-05T03:00Z | 2015-12-05 03:00:00 | 40 | 275 | 0 || 2015-12-06T03:00Z | 2015-12-06 03:00:00 | 175 | 100 | 0 || 2015-11-04T03:00Z | 2015-11-04 03:00:00 | 310 | 280 | 0 || 2016-09-19T00:00Z | 2016-09-19 00:00:00 | 292 | 187 | 0 |

Сега го използвайте в подзаявка на оператора за изтриване:

изтрийте t1from tbl_entso_cdbf t1natural join ( изберете t0.* от tbl_entso_cdbf t0 join tbl_entso_cdbf t1 на t1.Utc =t0.Utc и t1.date =t0.date и t1.area_in =t0.area_out и t1.area_out =t0.area_in където t0.value =0 и (t1.value <> 0 или t1.area_in  

ЕСТЕСТВЕНО СЪЕДИНЯВАНЕ означава, че всички стойности на колони трябва да са равни. Ако сте имали първичен (или който и да е уникален) ключ, ще трябва да изберете само колоните с първичен (уникален) ключ в подзаявката вместо * .

Сега в таблицата са останали само следните редове:

<предварителен код>| UTC | дата | площ_в | area_out | стойност ||-------------------|--------------------|----- ----|----------|-------|| 2015-12-05T03:00Z | 2015-12-05 03:00:00 | 275 | 40 | 320 || 2015-12-06T03:00Z | 2015-12-06 03:00:00 | 100 | 175 | 550 || 2015-11-04T03:00Z | 2015-11-04 03:00:00 | 280 | 310 | 0 || 2016-09-19T00:00Z | 2016-09-19 00:00:00 | 187 | 292 | 45 |


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проверете базата данни, ако съществува, като използвате Laravel

  2. ВЗЕМЕТЕ йерархични данни в MySQL

  3. MySQL DATEDIFF() срещу TIMESTAMPDIFF():Каква е разликата?

  4. Какво не е наред с моя MySQL CASE/WHEN синтаксис?

  5. Как да заобиколите създаването на схема на Slick 3.0 при получаване на грешки поради ключови спецификации без дължина