Loading...

EXISTS оператору

EXISTS оператору подсуроонун кандайдыр бир маанини кайтарып бербестигин текшерет. Адатта, бул оператор таблицадагы жок дегенде бир сап кандайдыр бир шартты канааттандырарын көрсөтүү үчүн колдонулат. Саптардын жыйындысы кайтарылбагандыктан, мындай оператор менен подсуроолор абдан тез аткарылат.

Колдонмо оператору төмөнкү расмий синтаксиске ээ:

@A@

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">КАЙДА [ЖОК] ЖОК (кошумча суроо)</font></font>

@A@

Мисалы, Буйрутмалар жадыбалында буйрутмалары бар продуктылар таблицасынан бардык өнүмдөрдү табалы:

@A@

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">ТАНДОО * Товарлардан</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
КАЙДА БАР</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
(Буйрутмалар.ПродуктИд = Продукт.Идентификатор ЖЕРДЕН * ТАНДОО)</font></font><font></font>
@A@

MySQLде EXISTS билдирүүсү

Тескерисинче, таблицада шартты КАНАГАТАНДАЙТБАЙГАН саптар бар же жок экенин билгибиз келсе, анда биз операторлорду колдонсок болот NOT EXISTS. Мисалы, Буйрутмалар таблицасында буйрутмалар жок болгон бардык продуктуларды Продукт таблицасынан табалы:

@A@

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">ТАНДОО * Товарлардан</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
ЖОК ЖЕРДЕ (Буюртмалардан * ТАНДАП, WHERE Products.Id = Orders.ProductId)</font></font><font></font>

@A@

Белгилей кетчү нерсе, сиз да ушундай натыйжаны алуу үчүн IN операторун колдонсоңуз болот :

@A@

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">ТАНДОО *</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
FROM Products</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
Идентификатор КИРГИЗГЕН КАЙДА (Буйрутмалардан ПродуктИди ТАНДОО)</font></font><font></font>

@A@

Бирок EXISTS саптарды алып келбегендиктен, аны колдонуу IN операторун колдонууга караганда оптималдуу жана натыйжалуу.