table - php mysql find duplicate records




MySQL মধ্যে নকল রেকর্ড খুঁজুন (15)

আমরা ডুপ্লিকেটগুলি আরও একটি ক্ষেত্রের উপর নির্ভর করে দেখতে পাচ্ছি। এই ক্ষেত্রে আপনি নীচের বিন্যাস ব্যবহার করতে পারেন।

SELECT COUNT(*), column1, column2 
FROM tablename
GROUP BY column1, column2
HAVING COUNT(*)>1;

আমি একটি MySQL ডাটাবেস মধ্যে সদৃশ রেকর্ড টানতে চান। এই সঙ্গে সম্পন্ন করা যেতে পারে:

SELECT address, count(id) as cnt FROM list
GROUP BY address HAVING cnt > 1

যা ফলাফল:

100 MAIN ST    2

আমি এটি টেনে আনতে চাই যাতে এটি একটি প্রতিলিপি যা প্রতিটি সারি দেখায়। কিছুটা এইরকম:

JIM    JONES    100 MAIN ST
JOHN   SMITH    100 MAIN ST

কিভাবে এই কাজ করা যাবে কোন চিন্তা? আমি প্রথমে কোডটি দ্বিতীয় ক্যোয়ারির সাথে সদৃশগুলি সন্ধান করার চেষ্টা করছি।


আমি এই প্রশ্নের জন্য নির্বাচিত সেরা উত্তর চেষ্টা, কিন্তু এটা কিছুটা বিভ্রান্ত। আমি আসলে আমার টেবিল থেকে শুধুমাত্র একটি ক্ষেত্রের প্রয়োজন যে। এই লিঙ্ক থেকে নিম্নলিখিত উদাহরণ আমার জন্য খুব ভাল কাজ করে:

SELECT COUNT(*) c,title FROM `data` GROUP BY title HAVING c > 1;

এই প্রশ্নের সাথে ইমেল ঠিকানা দ্বারা সদৃশ ব্যবহারকারীদের খুঁজুন ...

SELECT users.name, users.uid, users.mail, from_unixtime(created)
FROM users
INNER JOIN (
  SELECT mail
  FROM users
  GROUP BY mail
  HAVING count(mail) > 1
) dupes ON users.mail = dupes.mail
ORDER BY users.mail;

এটা কি সহজ নয়:

SELECT *
FROM tc_tariff_groups
GROUP BY group_id
HAVING COUNT(group_id) >1

?


এটি একটি টেবিল পাস, কোন subqueries মধ্যে সদৃশ নির্বাচন করবে।

SELECT  *
FROM    (
        SELECT  ao.*, (@r := @r + 1) AS rn
        FROM    (
                SELECT  @_address := 'N'
                ) vars,
                (
                SELECT  *
                FROM
                        list a
                ORDER BY
                        address, id
                ) ao
        WHERE   CASE WHEN @_address <> address THEN @r := 0 ELSE 0 END IS NOT NULL
                AND (@_address := address ) IS NOT NULL
        ) aoo
WHERE   rn > 1

এই প্রশ্নটি ক্রমিকভাবে ROW_NUMBER()Oracle এবং SQL Server উপস্থিত রয়েছে

বিস্তারিত জানার জন্য আমার ব্লগে নিবন্ধটি দেখুন:


কীটি এই প্রশ্নের পুনঃলিখন করতে হবে যাতে এটি উপসর্গ হিসাবে ব্যবহার করা যেতে পারে।

SELECT firstname, 
   lastname, 
   list.address 
FROM list
   INNER JOIN (SELECT address
               FROM   list
               GROUP  BY address
               HAVING COUNT(id) > 1) dup
           ON list.address = dup.address;

খুব কার্যকর হতে যাচ্ছে না, কিন্তু এটি কাজ করা উচিত:

SELECT *
FROM list AS outer
WHERE (SELECT COUNT(*)
        FROM list AS inner
        WHERE inner.address = outer.address) > 1;

দ্রুততম duplicates অপসারণ প্রশ্ন পদ্ধতি:

/* create temp table with one primary column id */
INSERT INTO temp(id) SELECT MIN(id) FROM list GROUP BY (isbn) HAVING COUNT(*)>1;
DELETE FROM list WHERE id IN (SELECT id FROM temp);
DELETE FROM temp;

সদৃশ ঠিকানাগুলি খোঁজার চেয়ে এটি আরও জটিল, বিশেষ করে যদি আপনার সঠিকতা প্রয়োজন হয়। একটি মাইএসকিউএল প্রশ্ন এই ক্ষেত্রে যথেষ্ট নয় ...

আমি SmartyStreets এ কাজ করি , যেখানে আমরা ঠিকানা যাচাইকরণ এবং ডি-ডুপ্লিকেশন এবং অন্যান্য উপাদানগুলি করি, এবং একই সমস্যাগুলির সাথে আমি অনেকগুলি বিভিন্ন চ্যালেঞ্জ দেখেছি।

বিভিন্ন তৃতীয় পক্ষের পরিষেবা রয়েছে যা আপনার জন্য একটি তালিকাতে সদৃশ পতাকাঙ্কিত করবে। মাইএসকিউএল উপকরনের সাথে এটি করা শুধুমাত্র ঠিকানা ফর্ম্যাট এবং মানগুলির পার্থক্যের জন্য নয়। ইউএসপিএস (মার্কিন ঠিকানার জন্য) এই স্ট্যান্ডার্ডগুলি তৈরির জন্য নির্দিষ্ট নির্দেশিকাগুলি রয়েছে, তবে কেবলমাত্র কয়েকটি বিক্রেতারা যেমন ক্রিয়াকলাপগুলি পরিচালনা করতে প্রত্যয়িত।

সুতরাং, আমি আপনার জন্য সর্বোত্তম উত্তর সুপারিশ করব যে CSV ফাইলটিতে টেবিলটি এক্সপোর্ট করতে হয়, উদাহরণস্বরূপ, এবং এটি একটি সক্ষম তালিকা প্রসেসরের কাছে জমা দিন। এমন একটি LiveAddress যা এটি কয়েক সেকেন্ডে আপনার জন্য কয়েক মিনিটের মধ্যে স্বয়ংক্রিয়ভাবে সম্পন্ন করবে। এটি একটি নতুন ক্ষেত্রের সাথে সদৃশ সারিগুলিকে "সদৃশ" এবং এটিতে Y একটি মান সহ পতাকাঙ্কিত করবে।


select address from list where address = any (select address from (select address, count(id) cnt from list group by address having cnt > 1 ) as t1) order by address

অভ্যন্তরীণ সাব-ক্যোয়ারী ডুপ্লিকেট ঠিকানা সহ সারিগুলি ফেরত দেয় তখন বাহ্যিক সাব-ক্যোয়ারী ডুপ্লিকেটগুলির সাথে ঠিকানাটির ঠিকানা কলাম প্রদান করে। বাইরের সাব-ক্যোয়ারীটি কেবলমাত্র একটি কলাম প্রদান করতে হবে কারণ এটি অপারেটরের জন্য অপারেড হিসাবে ব্যবহৃত হয় = 'যেকোনো'


SELECT date FROM logs group by date having count(*) >= 2

SELECT t.*,(select count(*) from city as tt where tt.name=t.name) as count FROM `city` as t where (select count(*) from city as tt where tt.name=t.name) > 1 order by count desc

আপনার টেবিল সঙ্গে শহর প্রতিস্থাপন করুন। আপনার ক্ষেত্রের নাম দিয়ে নাম প্রতিস্থাপন করুন


select `cityname` from `codcities` group by `cityname` having count(*)>=2

এই একই প্রশ্ন আপনি জিজ্ঞাসা করেছেন এবং এর 200% কাজ এবং সহজও। উপভোগ করুন !!!


    SELECT *
    FROM (SELECT  address, COUNT(id) AS cnt
    FROM list
    GROUP BY address
    HAVING ( COUNT(id) > 1 ))

 SELECT firstname, lastname, address FROM list
 WHERE 
 Address in 
 (SELECT address FROM list
 GROUP BY address
 HAVING count(*) > 1)




duplicates