ПредишенСледващото

Премахване на дубликат и DISTINCT ключова дума

Предлаганата като опция DISTINCT ключова дума премахва дубликати от снимачната площадка резултат. Ако дадена ключова дума не е включен, на резултатите от заявката с ключови думи, отделни изключени записите с дублиращи се стойности на целевите области. Проверени само полетата, включени в списъка мишена на изберете.

Обявата 4.31. DISTINCT ключова дума

booktown = # SELECT DISTINCT author_id

booktown- # ОТ книги;

booktown = # SELECT DISTINCT ON (author_id)

booktown- # author_id. заглавие

booktown- # ОТ книги;

16 | Малки жени

115 | Издайническото сърце

1212 | Практически PostgreSQL

1644 | Динамична анатомия

1809 | The Cat в шапката

2031 | лека нощ Луната

4156 | Сиянието

7805 | Програмиране Python

7806 | Perl Cookbook

15990 | Франклин в мрака

25 041 | Заека за велур

През втората заявка да използва друга форма на DISTINCT с ясен списък на полета (или изрази) се проверяват за дубликати. В този случай, по искане и връща 13-записи, тъй като раздел ON показва, че дубликати проверени по значение полето До author_i г. Без раздел по заявка са верни) и за всички 15 влизания като по подразбиране PostgreSQL проверява пълно съвпадение на всички полета.

Като цяло PostgreSQL избира записи са изключени от набора от резултати в секциите за присъствие, по своя преценка. Ако искането, заедно с ясно изразена раздел включва ORDER BY, можете ръчно да зададете реда за вземане на проби на полета, така че необходимите записи са в началото. Сортиране записи обсъдени в раздел "Сортиране записи".

Ако вместо премахване на всички дублиращи се достатъчно, за да групови записи с дублиращи се стойности на GROUP секция заявка, като, както е описано в подраздел "Групирането на записи."

Клаузата за КЪДЕ описва логическо условие, че трябва да бъдат изпълнени от последната част на записи. На практика почти винаги SELECT команда съдържа поне една секция, където се изясни.

Да предположим, че искате списък на всички книги, посветени на компютърните технологии в booktown базата данни. Тези книги subject_id поле е 4. В съответствие с това в раздела са включени КЪДЕ = оператор, който проверява за това състояние. Един пример е показан на Обявата 4.32.

Обявата 4.32. Обикновено секция, където

booktown = # SELECT * FROM книги

booktown- # КЪДЕТО subject_id = 4;

номер | заглавие | author_id | subject_id

41472 | Практически PostgreSQL | 1212 | 4

41473 | Програмиране Python | 7805 | 4

41477 | Учене PostgreSQ L | 7805 | 4

41478 | Perl Cookbook | 7806 | 4

Заявка Обява 4.32 връщане само тези записи, в които subject_id поле съвпада с цяло число, константа 4 Окончателният набор съдържа всички четири записа книгите вместо компютрите 15 записа, изброени в Обява 4.23.

КЪДЕТО секция може да съдържа няколко условия комбинирани с логически оператори (например, И или OR) и да върне един булева стойност. Да речем, че сте заинтересувани от всички записи за книги за компютри, които, освен това, че те са около компютри, написани от Марк Луц. Искането уточнява, комбинация от две условия с помощта на логически оператора и. Има и друг вариант - например търсене на всички книги, посветени на компютърните технологии или изкуствата; в този случай двете условия са комбинирани с логически оператор OR. Обява 4.33 доказа сценарии за ключови думи и и OR.

Обявата 4.33. Комбинирането на условията в раздел КЪДЕ

booktown = # SELECT заглавието от книги

booktown- # КЪДЕТО subject_id = 4

booktown- # И author_id = 7805;

booktown = # SELECT заглавието от книги

booktown- # КЪДЕТО subject_id = 4

booktown- # И author_id = 0;

През втората SELECT изявление в Обява 4.33 все още е първото условие (книги за компютърни теми), комбинирани с второто условие: книги за изкуството (subject_id поле е 0). Обемът се увеличава до последната част на пет записи, всеки от които е изпълнил най-малко едно от тези условия.

Броят на условия, съчетани в КЪДЕТО точка не се ограничава, въпреки наличието на две или повече условия обикновено групирането с скоби, ясно показваща логическата връзка между условия. Обява 4.34 показва как просто добавянето на скобите влияе върху резултата от командата.

Обявата 4.34. Групирането условия с скоби

booktown = # SELECT * FROM книги

booktown- # КЪДЕТО author_id = 1866

booktown- # И subject_id = 15

booktown- # ИЛИ subject_id = 3;

номер | заглавие | autho_id | subject_id

4513 | Дюн | 1866 | 15

1234 | Заека за велур | 25 041 | 3

booktown = # SELECT * FROM книги

booktown- # КЪДЕТО author_id = 1866

booktown- # И (subject_id = 15

booktown- # ИЛИ subject_id = 3);

номер | заглавие | author_id | subject_id

4513 | Дюн | 1866 | 15

Този пример показва, два опита за извличане на данни от booktown на записите в базата данни, чието поле author_id равна на 1866 г. В допълнение, на полето трябва да е равна или subject_id 15 или 3. Както се вижда от резултатите от първия отбор, при изброяване на всичките три условия, без скоби команда тълкува неправилно. Добавянето скоби води до факта, че изчисляването в скобите са направени, за да се провери от външните условия.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!