MySQL Tekrar Eden Verileri Bulmak

Merhaba,

Binlerce satır verinizin bulunduğu bir tabloda birbiri ile aynı olan satırları bulmanız gerekebilir. Bunun için aşağıya yazacağım SQL cümleciğini kendinize göre düzenleyerek çalıştırabilirsiniz.

SELECT column FROM table GROUP BY reference_column HAVING COUNT( * ) >1

column : buraya görüntülemek istediğiniz sutunları yazabilirsiniz veya tümü için * yazabilirsiniz.

table : işlem yapmak istediğiniz tabloyu yazınız

reference_column : aynı verilerin olup olmadığının kontrol edileceği sütun.

 

Umarım işinize yarar.

 

 

SQL Max Fonksiyonu Kullanımı

Bir değişiklik yapıp konuya hızlıca girmek istiyorum. Zaten başlık konuyu yeterince anlatıyor 🙂

Max fonksiyonu, adı üstünde, bir kolonun en büyük (maximum) değerini veriyor. Öncelikle basitçe tek tablo üzerinde max fonksiyonu kullanımına bakalım. Öncelikle isim ve yaş kolonlarına sahip bir antika tablosu tanımlayalım.

id isim yas
1 Saat 20
2 Mobilya 29
3 Porselen 50
4 Dolap 13

Şimdide elimizde bulunan en eski antikayı bulalım.

SELECT MAX(yas) FROM antika

Sorgu sonucu karşımıza şu sonuç geliyor.

MAX(yas)
50

Görüldüğü gibi sorgu sonucunda en eski antikanın yaşını vermiş oldu. Şimdi işin içine bir de teklif tablosunu ekleyelim.

id ant_id teklif_miktarı teklifveren
1 1 500 Hasan
2 1 550 Münevver
3 1 525 Mert
4 2 1400 Mert
5 2 1250 Münevver
6 3 900 Hasan
7 3 1050 Mert
8 4 2000 Mert
9 4 1800 Hasan

Tabloda teklif hangi antikaya yapıldığını gösteren antika_id alanı, teklif miktarı ve teklif eden kişi tutuluyor. Şimdi de her bir antikaya verilen en yüksek teklifi bulalım.

 SELECT antika.name, MAX(teklif.price) FROM antika LEFT OUTER JOIN teklif ON antika.id=teklif.ant_id GROUP BY antika.name ORDER BY antika.id

Bu sorguda ne yapmış olduk? antika ve teklif tablosunu birleştirerek bir antikaya verilmiş en yüksek teklif miktarını belirlemiş olduk. Sorgura GROUP BY terimi MAX fonksiyonunu (veya SUM gibi diğer fonksiyonların) antika isimleri özelinde çalıştırmamızı sağlıyor. Yani her bir antikanın sahip olduğu max teklifi bulmamızı sağlıyor. GROUP BY terimini kaldırırsak sadece en yüksek teklifi ve hangi antikaya ait olduğunu gösteren sonuç dönüyor.

Sorgu sonucu da şöyle;

İsim Teklif_miktarı
Saat 550
Mobilya 1400
Porselen 1050
Dolap 2000

Herkese iyi çalışmalar.