MySql veritabanında bulunan tablolar genellikle birden fazla kayıt içerir ve bu kayıtlar arasında bazen aynı bilgiler bulunabilir. Bu durumda, işlem yapılacak tablonun yinelenen verilerden arındırılması gerekebilir. Bu yazıda, MySql tablolarından kayıtları alırken yinelenen verileri nasıl filtreleyebileceğimizi detaylı bir şekilde açıklayacağız.
Yinelenen verilerin filtrelenmesi için iki yol bulunmaktadır: birincisi \"DISTINCT\" anahtar kelimesinin kullanılması ve diğeri \"GROUP BY\" ve \"HAVING\" kullanımıdır.
DISTINCT Anahtar Kelimesi Kullanımı
--------------------------------------
DISTINCT anahtar kelimesi, belirli bir sütunda bulunan yinelenen kayıtları tek bir kayıt olarak listelemeye yarar. Bu yöntemi kullanarak, veritabanından yinelenen kayıtları doğrudan filtrelemek mümkündür.
Örnek olarak, \"orders\" tablosunda bulunan \"customer_name\" sütununda yinelenen kayıtları listelemek istediğimizi varsayalım. Bu durumda, aşağıdaki sorguyu kullanabiliriz:
SELECT DISTINCT customer_name FROM orders;
Bu sorgu, \"orders\" tablosundaki \"customer_name\" sütununda bulunan yinelenen kayıtları tek bir kayıt olarak listeleyecektir.
GROUP BY ve HAVING Kullanımı
-------------------------------------
GROUP BY ve HAVING sorguları, özellikle birçok farklı sütunda yinelenen kayıtların filtrelenmesi gerektiğinde kullanışlıdır. Bu yöntem, yinelenen kayıtların özetlenmesine ve belirli bir koşulu karşılayan kayıtların listelenmesine olanak tanır.
Örnek olarak, \"orders\" tablosundaki \"customer_name\" ve \"order_date\" sütunlarında bulunan yinelenen kayıtları listelemek istediğimizi varsayalım. Ancak, sadece 2019 yılı içindeki kayıtları listelemek istiyoruz. Bu durumda, aşağıdaki sorguyu kullanabiliriz:
SELECT customer_name, order_date FROM orders WHERE order_date BETWEEN '2019-01-01' AND '2019-12-31' GROUP BY customer_name, order_date HAVING COUNT(*)>1;
Bu sorgu, \"orders\" tablosunda bulunan \"customer_name\" ve \"order_date\" sütunlarındaki yinelenen kayıtları tek bir kayıt olarak listeleyecektir. Burada \"HAVING COUNT(*)>1\" koşulu, belirli bir müşterinin 2019 yılı içinde en az 2 adet sipariş vermesini gerektirir. Bu sayede, belirtilen koşulu karşılamayan kayıtlar filtrelenir.
Sonuç olarak, yinelenen kayıtların filtrelenmesi, MySql veritabanında sıkça karşılaşılan bir sorundur. Bu sorunu çözmek için, \"DISTINCT\" anahtar kelimesi veya \"GROUP BY\" ve \"HAVING\" sorguları kullanılabilir. Her iki yöntem de, belirli bir sütunda bulunan yinelenen kayıtları tek bir kayıt olarak listelemeyi veya belirli bir koşulu karşılayan kayıtları listelemeyi sağlar.