رفتن به مطلب
  • 0

حذف رکورد های تکراری


ghost94

سوال

با سلام خدمت دوستان و اساتید محترم

من یه دیتابیس دارم که دائما توش یه سری مطلب در حال Insert شدن هستش که یک سری ازین مطالب تکراریه 

با چه دستوری رکورد های تکراری رو میشه حذف کرد ؟ (منظورم DELETE هستش و نمیخوام از DISTINCT استفاده کنم !)

سرچ کردم چیزی دستگیرم نشد ممنون میشم کمک کنید!

لینک ارسال
به اشتراک گذاری در سایت های دیگر

3 پاسخ به این سوال تاکنون داده شده است

ارسال های توصیه شده

سلام

یه بررسی بکنید

من تست نکردم

Dim sql As SQL
Dim cur ,cur2 As Cursor

cur = sql.ExecQuery("SELECT DISTINCT (id) FROM tbl")
For i = 0 To cur.RowCount - 1
	cur.Position = i
	cur2 = sql.ExecQuery("SELECT FROM tbl WHERE name = "&cur.GetString("name")&" AND id > "&cur.GetInt("id"))
	For j = 0 To cur2.RowCount - 1
		cur2.Position = j
		sql.ExecNonQuery("DELETE FROM tbl WHERE id = "&cur2.GetInt("id"))
		Log("DELETE id : "&cur2.GetInt("id")
	Next
Next

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

مرسی از پاسخگوییتون 

منتها یه مقدار پیچیده شده و کدهای خودمم خیلی پیچیده اش کردم :DD: 

اگه امکانش هست اینو یه نگاه بندازید ببینید میشه اینو آورد تو بیسیک :malih:

http://papro-co.ir/4590-2/

لینک ارسال
به اشتراک گذاری در سایت های دیگر

والا این t-sql هست و اصلا مطمئن نیستم که Sqlite اینو ساپورت بکنه یا نه

خیلی قویه اما SqlServer نمیشه

کدایی که دادم کار نکرد؟

یه مورد داشت توی ادامه ی این کد برطرف میکنم

ببین این میاد و اسامیه تکراری رو ، اولیشو میگیره با Distinct که خودت میدونی

مثلا

1-شهاب

2-مهدی

3-شهاب

این میاد شهاب و مهدی رو میگیره

حالا برای شهاب میره تو کله دیتابیس چک میکنه و هر چی شهاب هست و ای دی ای که داره بزرگتر از 1 هست رو میاره

حالا توی حلقه ، تک تکشون رو برات حذف میکنه

همه به جز اولی

راحت تره برات ، کدهای t-sql هم کامل بلد نیستم اما وقتی برنامه نویسی میتونی بکنی سمت بیسیک ، به نظرم سخت میشه کارت بری سراغ پیچیدگیه Sql

Dim sql As SQL
Dim cur ,cur2 As Cursor

cur = sql.ExecQuery("SELECT DISTINCT (name) FROM tbl")
For i = 0 To cur.RowCount - 1
	cur.Position = i
	cur2 = sql.ExecQuery("SELECT FROM tbl WHERE name = "&cur.GetString("name")&" AND id > "&cur.GetInt("id"))
	For j = 0 To cur2.RowCount - 1
		cur2.Position = j
		sql.ExecNonQuery("DELETE FROM tbl WHERE id = "&cur2.GetInt("id"))
		Log("DELETE id : "&cur2.GetInt("id")
	Next
Next

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

مهمان
این موضوع برای عدم ارسال قفل گردیده است.
  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...