پیدا کردن داده های تکراری در دیتابیس - نسخهی قابل چاپ +- سیستمیها (http://forums.systemiha.ir) +-- انجمن: کامپیوتر (http://forums.systemiha.ir/forumdisplay.php?fid=1) +--- انجمن: اس کیو ال سرور SQL Server (http://forums.systemiha.ir/forumdisplay.php?fid=5) +--- موضوع: پیدا کردن داده های تکراری در دیتابیس (/showthread.php?tid=1) |
پیدا کردن داده های تکراری در دیتابیس - mojtabamalaekeh - 2015/08/30 برای پیدا کردن مقادیر تکراری یک فیلد در SQL Server باید از تابع COUNT استفاده کنیم و همزمان از یک شرط هم استفاده کنیم که مقدار تابع COUNT را بررسی کند. مقدار توابع aggregate رو نمیشه با WHERE بررسی کرد! در عوض میشه از HAVING استفاده کرد. پیش نیاز این مطلب، آشنایی با GROUP BY و توابع جمع هست. GROUP BY باعث میشه که از هر فیلدی فقط یک نمونه توی خروجی کوئری نمایش داده بشه. که تعریف GROUP BY شبیه DISTINCT ـه ولی بدون استفاده از GROUP BY نمیشه همزمان هم از HAVING و هم از مقدار یک فیلد توی SELECT استفاده کرد. کد php: use myDB علاوه بر هدف اصلی که پیدا کردن ردیف های تکراری بود، 2 نکته دیگه هم توی کد بالا هست: نکته اول: از WHERE استفاده شده تا فقط فیلدهایی بررسی بشن که با حرف «ل» شروع میشن نکته دوم: نتیجه ی کوئری بر حسب تعداد تکرار مقادیر مرتب شده تا اول مقادیری با میزان تکرار کمتر نمایش داده بشن و سپس مقادیری که تکرار اونا بیشتر بوده. ترتیب استفاده از WHERE, GROUP BY, ORDER BY اجباری است و باید رعایت بشه. توی WHERE فقط از فیلدهای SELECT شده، به غیر از توابع جمعی (aggreegate) میشه استفاده کرد. توی HAVING فقط از توابع جمعی (aggreegate) میشه استفاده کرد. |