আমি এরকম কিছু করতে চাই:
SELECT *
FROM db.table
WHERE COUNT(someField) > 1
আমি কীভাবে এটি MySQL এ অর্জন করতে পারি?
উত্তর:
ব্যবহার করুন HAVING, না WHEREদফা, সমষ্টিগত ফলাফলের তুলনা জন্য।
ক্যোরিয়াকে ফেস ভ্যালুতে নেওয়া:
SELECT *
FROM db.table
HAVING COUNT(someField) > 1
আদর্শভাবে, ধারাটিতে GROUP BYযথাযথ মূল্যায়নের জন্য একটি সংজ্ঞায়িত হওয়া উচিত HAVING, তবে মাইএসকিউএল গ্রুপের মাধ্যমে গোপন কলামগুলিকে মঞ্জুরি দেয় না ...
এটি কি অনন্য সীমাবদ্ধতার জন্য প্রস্তুত someField? দেখে মনে হচ্ছে এটি হওয়া উচিত ...
someFieldমান বা যদি না খালি ফলাফল সেট থাকে তবে এটি ফিরিয়ে আনবে ।
SELECT username, numb from(
Select username, count(username) as numb from customers GROUP BY username ) as my_table
WHERE numb > 3
আপনি এখানে যান:
SELECT Field1, COUNT(Field1)
FROM Table1
GROUP BY Field1
HAVING COUNT(Field1) > 1
ORDER BY Field1 desc
আপনি স্ব-যোগদানের মাধ্যমে এটিও করতে পারেন:
SELECT t1.* FROM db.table t1
JOIN db.table t2 ON t1.someField = t2.someField AND t1.pk != t2.pk
একমুখী
SELECT t1.*
FROM db.table t1
WHERE exists
(SELECT *
FROM db.table t2
where t1.pk != t2.pk
and t1.someField = t2.someField)
ওএমজি পনিস যেমন বলেছিলেন, ক্লজ থাকার বিষয়টি আপনার পরে কী is তবে, আপনি যদি আশা করছিলেন যে আপনি সংক্ষিপ্তসারের পরিবর্তে পৃথক সারি পেয়ে যাবেন ("থাকার সাথে একটি সংক্ষিপ্তসার তৈরি হয়) - এটি একটি বিবৃতিতে করা যায় না। সেক্ষেত্রে আপনাকে অবশ্যই দুটি বিবৃতি ব্যবহার করতে হবে।
আমি গ্রুপ বায়ুতে একটি উদাহরণ দিই যার মধ্যে দুটি সারণীতে:
Select cn.name,ct.name,count(ct.id) totalcity
from city ct left join country cn on ct.countryid = cn.id
Group By cn.name,ct.name
Having totalcity > 2
"Pk" একটি মূল ক্ষেত্র হওয়া উচিত বলেও উল্লেখ করা উচিত। স্ব-যোগদান
SELECT t1.* FROM db.table t1
JOIN db.table t2 ON t1.someField = t2.someField AND t1.pk != t2.pk
বিল কারভিন দ্বারা আপনাকে সমস্ত রেকর্ড প্রদান করে যা সদৃশ যা আমি চেয়েছিলাম। কারও কারও দু'জনের বেশি রয়েছে বলে আপনি একই রেকর্ডটি একাধিকবার পেতে পারেন। কী ফিল্ডস দমন দ্বারা একই রেকর্ড থেকে পরিত্রাণ পেতে আমি একই ক্ষেত্রগুলি সহ অন্য একটি টেবিলে সমস্ত লিখেছি। আমি চেষ্টা করেছিলাম
SELECT * FROM db.table HAVING COUNT(someField) > 1
প্রথম উপরে। এটি থেকে ফিরে আসা ডেটা কেবল নকলগুলির মধ্যে একটি দেয়, এটি আপনাকে যা দেয় তার 1/2 এর চেয়ে কম তবে আপনি যদি চান তবে গণনাটি ভাল is
GROUP BYঅবশ্যই দরকার (যদি এটি কোনও মাইএসকিউএল অ মানক জিনিস না হয়)?