sql >> Database teknologi >  >> RDS >> Mysql

slet min. værdier fra poster efter sammenligning af to værdier fra tabel i sql

Find de rækker, du vil slette med denne forespørgsel:

select t0.* 
from tbl_entso_cdbf t0
join tbl_entso_cdbf t1
  on  t1.Utc  = t0.Utc
  and t1.date = t0.date
  and t1.area_in  = t0.area_out
  and t1.area_out = t0.area_in
where t0.value = 0
  and (t1.value <> 0 or t1.area_in < t0.area_in);
 

Betingelserne er:

  • value = 0
  • Der er en anden række med samme Utc og samme date men area_in og area_out er skiftet.
  • value i den anden række er ikke 0 eller area_in er mindre.

Forespørgslen returnerer følgende rækker:

| Utc | date | area_in | area_out | value | |-------------------|---------------------|---------|----------|-------| | 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 |

Brug det nu i en underforespørgsel til delete-sætningen:

delete t1
from tbl_entso_cdbf t1
natural join (
    select t0.*
    from tbl_entso_cdbf t0
    join tbl_entso_cdbf t1
      on  t1.Utc  = t0.Utc
      and t1.date = t0.date
      and t1.area_in  = t0.area_out
      and t1.area_out = t0.area_in
    where t0.value = 0
      and (t1.value <> 0 or t1.area_in < t0.area_in)    
) t0;
 

NATURAL JOIN betyder, at alle kolonneværdier skal være ens. Hvis du havde en primær (eller en unik) nøgle, skulle du kun vælge de primære (unikke) nøglekolonner i underforespørgslen i stedet for * .

Nu er kun følgende rækker tilbage i tabellen:

| Utc | date | area_in | area_out | value | |-------------------|---------------------|---------|----------|-------| | 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. Ændring af php-script til PDO forårsager syntaksfejl under MySQL-opdateringsforespørgsel

  2. Kan vi bruge Meteor framework med mysql database

  3. ORA-00923:FROM nøgleord blev ikke fundet, hvor det forventes - SQLDeveloper

  4. MySQL:Alternativer til ORDER BY RAND()