Return True - SQL - کار با SELECT DISTINCT در دیتابیس

SQL - کار با SELECT DISTINCT در دیتابیس

توی این مقاله، میخوایم در باره نحوه کار SELECT DISTINCT حرف بزنیم. این دستور رو وقتی به کار میبریم که بخوایم ردیف های تکراری رو از نتیجه حذف کنیم. توضیحش همینقدر کوتاه و راحته. حالا بیاین ببینیم چطوری کدشو بزنیم.

مقدمه ای بر SELECT DISTINCT

در واقع DISTINCT توی SELECT  استفاده میشه و همونطور که گفتم، ردیف های تکراری رو از نتیجه Query حذف می کنه. 

 DISTINCT فقط یک ردیف رو از هر گروه تکراری نگه میداره. همچنین میتونه روی یک و یا چندین ستون توی دستور SELECT اعمال بشه.

دستور DISTINCT توی SELECT  به شکل زیر هست:

SELECT
   DISTINCT column1
FROM
   table_name;

در نتیجه اجرای این دستور، ستون column1 هیچ مقدار تکراری ای نخواهد داشت.

اگه بیش از یک ستون رو برای DISTINCT انتخاب کنیم، نتیجه های تکراری برای مجموع دو ستون حذف میشه.

برای استفاده DISTINCT در بیش از یک ستون، دستور به شکل زیر خواهد بود:

SELECT
   DISTINCT column1, column2
FROM
   table_name;

در نتیجه این دستور، مجموع محتوای دو ستون column1 و column2 یونیک خواهند بود. یعنی شاید توی column1 موارد تکراری ببینیم ( و یا توی column2)، ولی مجموع column1 و column2 تکرار نمیشن.

مثال هایی از  SELECT DISTINCT

بیاین یه جدول درست کنیم و یک سری اطلاعات توش بریزیم تا نتیجه رو ببینیم پس اول ساخت جدول ( توی MySql ):

CREATE TABLE `distinct_demo` (
  `id` int NOT NULL,
  `bcolor` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `fcolor` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

و در ادامه اطلاعات نمونرو واردش کنیم:

INSERT INTO `distinct_demo` (`id`, `bcolor`, `fcolor`) VALUES
(13, 'red', 'red'),
(14, 'red', 'red'),
(15, 'red', NULL),
(16, NULL, 'red'),
(17, 'red', 'green'),
(18, 'red', 'blue'),
(19, 'green', 'red'),
(20, 'green', 'blue'),
(21, 'green', 'green'),
(22, 'blue', 'red'),
(23, 'blue', 'green'),
(24, 'blue', 'blue');

اسم جدولمون distinct_demo هست که سه ستون داره id که کلید اصلی و خودش یکی یکی عددش زیاد میشه. دوتای بعدی bcolor و fcolor هستن. توشون هم اطلاعاتی رو ریختیم تا تست کنیم.

حالا بیاین اول یه Query ساده بگیریم که اطلاعات توی جدول رو بهمون نشون بده:

SELECT
	id,
	bcolor,
	fcolor
FROM
	distinct_demo ;

و در نتیجه چیزی که خواهیم داشت به شکل زیر هست:

SQL - کار با SELECT DISTINCT در دیتابیس

دستور DISTINCT روی یک ستون:

دستور زیر اطلاعات یونیک رو از ستون bcolor توی جدول distinct_demo انتخاب می کنه و در نهایت این اطلاعات رو بر اساس حروف الفبا مرتب میکنه و نشون میده:

SELECT
	DISTINCT bcolor
FROM
	distinct_demo
ORDER BY
	bcolor;

نتیجه به شکل زیر خواهد بود:

SQL - کار با SELECT DISTINCT در دیتابیس

دستور DISTINCT روی بیش از یک ستون:

دستور زیر نحوه اعمال  DISTINCT روی چند ستون رو نشون میده:

SELECT
	DISTINCT bcolor,
	fcolor
FROM
	distinct_demo
ORDER BY
	bcolor,
	fcolor;

و نتیجه به شکل زیر خواهد بود:

SQL - کار با SELECT DISTINCT در دیتابیس

همونطور که میبینین، چون ما دو ستون bcolor و fcolor رو برای DISTINCT انتخاب کردیم، مجموع اطلاعات هر ردیف یونیک هست. به همین راحتی.

پس استفاده از DISTINCT توی SELECTبرای مواقعی هست که میخوایم اطلاعات برگشتی، یونیک باشه. مثلا فرض کنین توی جدول بالا، بخوایم ببینیم چند نوع رنگ توی ستون  bcolor قرار داره. برای این کار، باید چه Query بگیریم؟
توی کامنت برام بنویسین ;)

نظرات