PDA

View Full Version : حذف رکورهای تکراری



ahmadflasher
دوشنبه 18 دی 1391, 17:08 عصر
سلام. من یه جدول دارم مثل جدول زیر که یه سری داده ها تو یه فیلد خاص تکراریه،چه جوری میشه این رکوردهایی که توش یه فیلد خاص تکراریه رو حذف کرد.


+----+--------+
| id | name |
+----+--------+
| 1 | google |
| 2 | yahoo |
| 3 | msn |
| 4 | google |
| 5 | google |
| 6 | yahoo |
+----+--------+

emad4000
دوشنبه 18 دی 1391, 18:08 عصر
چه جوری میشه این رکوردهایی که توش یه فیلد خاص تکراریه رو حذف کرد.


اینجوری !!!


DECLARE @tempTable1 (id int, name nvarchar(100), c int)
DECLARE @tempTable2 (id int, name nvarchar(100), c int)
DECLARE @finalTable (id int, name nvarchar(100))

INSERT INTO @tempTable1
SELECT
id, DISTINCT(name), COUNT(name) AS c
FROM
MainTable
WHERE
c > 1

INSERT INTO @tempTanle2
SELECT
id, name, COUNT(name) AS c
FROM
MainTable
WHERE
c = 1

INSERT INTO @finalTable
SELECT
id, name
FROM
@tempTable1
UNION
SELECT
id, name
FROM
@tempTable2

ahmadflasher
دوشنبه 18 دی 1391, 19:40 عصر
اینجوری !!!


DECLARE @tempTable1 (id int, name nvarchar(100), c int)
DECLARE @tempTable2 (id int, name nvarchar(100), c int)
DECLARE @finalTable (id int, name nvarchar(100))

INSERT INTO @tempTable1
SELECT
id, DISTINCT(name), COUNT(name) AS c
FROM
MainTable
WHERE
c > 1

INSERT INTO @tempTanle2
SELECT
id, name, COUNT(name) AS c
FROM
MainTable
WHERE
c = 1

INSERT INTO @finalTable
SELECT
id, name
FROM
@tempTable1
UNION
SELECT
id, name
FROM
@tempTable2


مرسی . حالا اگه اینو بخوام اینو تو php بنویسم چه جوریه؟؟؟

emad4000
دوشنبه 18 دی 1391, 20:30 عصر
حالا اگه اینو بخوام اینو تو php بنویسم چه جوریه؟؟؟

اگه با SQL Server کار می کنی، می تونی اینو تو یه تابع SQL (با خروجی Table) یا روال ذخیره شده (Stored Procedure) بنویسی. بعد اون تابع یا روال رو از داخل پروژه PHP ات فراخوانی کنی. (تو تابع بنویسی قشنگ تره!!!)

mostafa_shaeri_tj
سه شنبه 26 دی 1391, 23:51 عصر
اگر ستون های مدنظر شما در جدول رو که نمیخواین اطلاعات تکراری داشته باشه a و b درنظر بگیریم، اسونترین کار اجرای این کد هست :


ALTER IGNORE TABLE YourTable ADD UNIQUE INDEX(a,b);

rezasprit
یک شنبه 01 بهمن 1391, 16:37 عصر
SELECT * FROM `table name` GROUP BY name`
in query dade haye tekrari ro yek bar neshoon mide
to php ejrash kon va dade bedast oomade ro to table jadid beriz
TQ
FAZLI