View Full Version : یک سوال در مورد دستور Distinct
جواد ملاولی
سه شنبه 29 دی 1388, 11:37 صبح
سلام.
وقتی از دستور Distinct استفاده می کنیم که بخوایم رکورد های تکراری نداشته باشیم. رکورد های تکراری یعنی رکوردهایی که همه ی فیلدهاشون یکی باشه.
حالا سوال اینه که چطوری میتونیم رکوردهای تکرای رو حذف کنیم ولی منظورمون از رکورد تکراری این باشه: رکوردهایی که یکی از فیلدهاشون یکی باشه نه همه ی فیلدها؟
محمد سلیم آبادی
سه شنبه 29 دی 1388, 12:56 عصر
سلام،
اگر از نسخه ی 2005 به بعد استفاده می کنین با کمک تابع row_number و یک cte به راحتی می توانین این کار را انجام دهین.
اگر به کد های DML احتیاج دارین کدهای DDL خود را قرار دهین.
جواد ملاولی
سه شنبه 29 دی 1388, 17:35 عصر
اگر از نسخه ی 2005 به بعد استفاده می کنین با کمک تابع row_number و یک cte به راحتی می توانین این کار را انجام دهین.
اگر به کد های DML احتیاج دارین کدهای DDL خود را قرار دهین.
دوست عزیز من از بانک اکسس استفاده می کنم. این کارهایی رو که فرمودید -و من نفهمیدم!!- میشه با کوئری در اکسس انجام داد؟
محمد سلیم آبادی
سه شنبه 29 دی 1388, 18:37 عصر
زبان SQL قدرتمند است نگران نباشید.
اگر جامعیت داده ها در بانکتان اعمال شده باشد نباید سطرهای تکراری داشته باشید. این کوئری در نرم افزار SQL Server در صورتی که سطر تکراری نداشته باشین بدرستی کار خواهد کرد.
از کوئری زیر الگو بگیرین. بر اساس ستونی که می خواهین تکراری نباشد گروه بندی انجام بدین سپس با توابع تجمعی، min یا max ستون های دیگر را بدست آورین و در قسمت having filter مثل کد زیر عمل کنین.
امید وارم مشکلتان حل شود.
delete from t
where not exists
(select i, max(j)
from t as t1
group by i
having t.i = t1.i
and t.j = max(t1.j));
البته اگر بتوانین از حلقه در access استفاده کنین می توانین براحتی به خواسته خود برسین.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.