Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

hapus min. nilai dari catatan setelah membandingkan dua nilai dari tabel di sql

Temukan baris yang ingin Anda hapus dengan kueri ini:

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);

Syaratnya adalah:

  • value = 0
  • Ada baris lain dengan Utc yang sama dan date yang sama tapi area_in dan area_out diaktifkan.
  • value dari baris lainnya bukan 0 atau area_in lebih kecil.

Kueri akan mengembalikan baris berikut:

|               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 |

Sekarang gunakan dalam subquery dari pernyataan delete:

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 berarti semua nilai kolom harus sama. Jika Anda memiliki kunci utama (atau kunci unik apa pun), Anda hanya perlu memilih kolom kunci utama (unik) di subkueri alih-alih * .

Sekarang hanya baris berikut yang tersisa di tabel:

|               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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menambahkan bobot ke tabel MySQL dan memilih nilai acak menurut ini?

  2. Driver QMYSQL tersedia tetapi tidak dimuat

  3. Rails 3, mengubah bidang dalam model dari string ke tipe datetime

  4. Bagaimana cara mengubah acara di mysql yang sudah dibuat

  5. Koneksi Jarak Jauh MySQL (Replikasi)