PostgreSQL

سرفصل دروس

SELECT DISTINCT

مقدمه ای بر دستور SELECT DISTINCT  در PostgreSQL

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

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

SELECT DISTINCT 
 column_1
FROM table_name

در صورتیکه از چند ستون در دستور DISTINCT استفاده نمایید تصمیم گیری بر اساس ترکیب آن ستون ها صورت می گیرد. 

SELECT DISTINCT
 column_1,
 column_2
FROM
 tbl_name;

همچنین PostgreSQL  دستور DISTINCT ON را فراهم کرده است تا اولین ردیف از هر گروه تکراری انتخاب شود. به دستور زبان زیر توجه نمایید : 

SELECT DISTINCT ON (column_1),
             column_2
FROM
 tbl_name
ORDER BY
 column_1,
 column_2;

ترتیب رکوردها برگردانده شده توسط SELECT غیرقابل پیش بینی می باشد پس اولین رکورد انتخاب شده از لیست تکراری نیز غیر قابل پیش بینی می باشد. استفاده از ORDER BY توسط DISTINCT ON می تواند جهت بدست آوردن نتیجه دقیق تر مفید باشد. 

 

مثال دستور SELECT DISTINCT  در PostgreSQL

اجازه بدهید جهت تمرین ابتدا یک جدول جدید به نام t1 ایجاد کنیم و در آن داده نمونه قرار دهیم.  ابتدا توسط دستور زیر جدول t1 را با سه ستون id و bcolor  و fcolor ایجاد نمایید: 

CREATE TABLE t1 (
 id serial NOT NULL PRIMARY KEY,
 bcolor VARCHAR,
 fcolor VARCHAR
);

سپس توسط دستور  INSERT چندین رکورد را به جدول t1 اضافه نمایید: 

INSERT INTO t1 (bcolor, fcolor)
VALUES
 ('red', 'red'),
 ('red', 'red'),
 ('red', NULL),
 (NULL, 'red'),
 ('red', 'green'),
 ('red', 'blue'),
 ('green', 'red'),
 ('green', 'blue'),
 ('green', 'green'),
 ('blue', 'red'),
 ('blue', 'green'),
 ('blue', 'blue');

حال توسط دستور SELECT داده های جدول t1 را مشاهده نمایید:

SELECT *
FROM t1;

جدول t1

 

مثالی از دستور DISTINCT بر روی یک ستون

مثال زیر لیست مقادیر یکتا از ستون bcolor را مرتب شده بر اساس حروف الفبا توسط دستور ORDER BY نمایش می دهد: 

SELECT DISTINCT
 bcolor
FROM
 t1
ORDER BY
 bcolor;

DISTINCT بر روی یک ستون

 

مثالی از دستور DISTINCT بر روی چندین ستون

مثال زیر شیوه استفاده از دستور DISTINCT بر روی چند ستون را نمایش می دهد: 

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

DISTINCT بر روی چندین ستون

 

از آنجاییکه هم از ستون bcolor  و هم از ستون fcolor  استفاده کردیم ، PostgreSQL مقادیر دو ستون را با هم ترکیب می نماید تا مقادیر یکتا را بررسی نماید. این پرس و جو ترکیب هایی از ستون bcolor و fcolor را در جدول t1 بصورت یکتا بر می گرداند. 

 

مثال دستور DISTINCT ON  در PostgreSQL

مثال زیر نتیجه را بر اساس bcolor و fcolor مرتب می نماید و اولین رکورد را از هر گروه نگاه می دارد:

SELECT DISTINCT
 ON (bcolor) bcolor,
 fcolor
FROM
 t1
ORDER BY
 bcolor,
 fcolor;

 دستور DISTINCT ON

 

اشتراک گذاری :