মাইএসকিউএল - যেখানে (যেখানে) ক্লজটিতে (*) ব্যবহার করছেন


157

আমি মাইএসকিউএল ( pseudoকোড দেখুন) এ নিম্নলিখিতগুলি সম্পাদন করার চেষ্টা করছি

SELECT DISTINCT gid
FROM `gd`
WHERE COUNT(*) > 10
ORDER BY lastupdated DESC

WHERE ধারাটিতে কোনও (নির্বাচন ...) ব্যবহার না করে এটি করার কোনও উপায় আছে কারণ এটি সম্পদের অপচয় হিসাবে মনে হবে।

উত্তর:


264

এটা চেষ্টা কর;

select gid
from `gd`
group by gid 
having count(*) > 10
order by lastupdated desc

37
+1 থাকার জন্য এটি সর্বদা ধারা যে তারা স্কিল কোর্স বা বইগুলিতে যথাযথভাবে পড়াতে বিরক্ত করে না এবং এটি সম্পর্কে জানার সাথে সাথে কোডারটি আধ্যাত্মিক স্তর ছাড়িয়ে অগ্রগতি লাভ করার লক্ষণ।
ক্রুয়াচান

আপনি যদি বুলিয়ান বা অভিব্যক্তির অংশ হিসাবে COUNT () ব্যবহার করার চেষ্টা করছেন? যেমনAND ((stock = 1 OR quantity > 0) OR (COUNT(v.id) > 0)
nnyby

আমি এটি বুঝতে পেরেছি .. আপনি এই জাতীয় HAVING variations > 0 OR (stock = 1 OR quantity > 0)
HAVING ধারাটিতে

28

আপনি যা করার চেষ্টা করছেন সে সম্পর্কে আমি নিশ্চিত নই ... সম্ভবত এমন কিছু

SELECT gid, COUNT(*) AS num FROM gd GROUP BY gid HAVING num > 10 ORDER BY lastupdated DESC

1
এমএসএসকিউএল "অবৈধ কলাম নাম" এর জন্য পার্স ত্রুটি দেয় num। পরিষ্কার সিনট্যাক্সের জন্য যাইহোক +1 (আমার সেটআপ হতে পারে, বা এমএসএস ... আহ ভাল)।
সমিস

নির্বাচনের সমস্ত কলামের জন্য একটি উপনাম সরবরাহ করুন।
আদিল খলিল

17
SELECT COUNT(*)
FROM `gd`
GROUP BY gid
HAVING COUNT(gid) > 10
ORDER BY lastupdated DESC;

সম্পাদনা করুন (আপনি যদি কেবল গিডগুলি চান):

SELECT MIN(gid)
FROM `gd`
GROUP BY gid
HAVING COUNT(gid) > 10
ORDER BY lastupdated DESC

ধন্যবাদ জো তবে এটি COUNT () কে রিটার্ন দিচ্ছে - আমি 10 এর পরে আরও একটি জিড (*) রয়েছে এমন সমস্ত গিড ফিরিয়ে আনতে চাইছি

1
সেখানে মিন () লাগবে না।
আলী এরশিজ


14

অনুচ্ছেদ ব্যতিরেকে কেবল একাডেমিক সংস্করণ:

select *
from (
   select gid, count(*) as tmpcount from gd group by gid
) as tmp
where tmpcount > 10;

13

A WHERE ধারাটিতে মোট ফাংশন (উদাঃ COUNT, MAX, ইত্যাদি) থাকতে পারে না। অতএব আমরা পরিবর্তে HAVING ধারাটি ব্যবহার করি। সুতরাং পুরো ক্যোয়ারী এর সাথে একই রকম হবে:

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value;

6

- আধঘন্টা রেকর্ড হারিয়ে যাওয়া আবহাওয়া স্টেশনগুলির সন্ধান করা

SELECT stationid
FROM weather_data 
WHERE  `Timestamp` LIKE '2011-11-15 %'  AND 
stationid IN (SELECT `ID` FROM `weather_stations`)
GROUP BY stationid 
HAVING COUNT(*) != 48;

- ইয়াপিস্কানের পরিবর্তনের সাথে একটি যেখানে .. ইন .. নির্বাচন করুন


1

আমি তোমাকে যোগ করতে পারবেন না মনে count()সঙ্গে where। এখন দেখুন কেন ....

whereযেমন হয় না having,having মানে আপনি গ্রুপ এবং গণনার একই কাজ করে বা কাজ করছেন, এটি পুরো গোষ্ঠীর সাথেও কাজ করছে,

এখন এটি পুরো গোষ্ঠী হিসাবে কীভাবে কাজ করছে তা গণনা করুন

একটি টেবিল তৈরি করুন এবং কিছু আইডি লিখুন এবং তারপরে ব্যবহার করুন:

select count(*) from table_name

আপনি মোট মানগুলি পেয়ে যাবেন মানে এটি কোনও গোষ্ঠীকে নির্দেশ করছে! এর whereসাথে যুক্ত হয় count();


1

COUNT (*) কেবলমাত্র হাওয়িংয়ের সাথে ব্যবহার করা যেতে পারে এবং গ্রুপ বাই স্টেটমেন্টের পরে অবশ্যই ব্যবহার করা উচিত দয়া করে নিম্নলিখিত উদাহরণটি সন্ধান করুন:

SELECT COUNT(*), M_Director.PID FROM Movie
INNER JOIN M_Director ON Movie.MID = M_Director.MID 
GROUP BY M_Director.PID
HAVING COUNT(*) > 10
ORDER BY COUNT(*) ASC
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.