SQL Ішкі сұраулары

Ішкі сұрау SELECT, SELECT...INTO, INSERT...INTO, DELETE, or UPDATE нұсқауына не басқа іші сұрау ішіне енгізілген SELECT нұсқауы.

Синтаксис

Ішкі сұрауды жасау үшін үш пішіндерді пайдалануыңызға болады:

comparison [ANY | ALL | SOME] (sqlstatement)

expression [NOT] IN (sqlstatement)

[NOT] EXISTS (sqlstatement)

Ішкі сұрауда осы бөліктер бар:

Бөлік

Сипаттама

салыстыру

өрнек мен өрнекті ішкі сұрау нәтижелерімен салыстыратын салыстыру амалдағышы.

өрнек

Өрнек бойынша ішкі сұрау нәтижелер жинағы ізделінеді.

sqlstatement

Әр өзге SELECT нұсқауы сияқты пішімі мен ережелері бірдей SELECT нұсқауы.


Ескертпелер

Ішкі сұрауды SELECT нұсқауының өріс тізіміндегі не WHERE не HAVING өрнегіндегі өрнектің орнына пайдалануыңызға болады. Ішкі сұрауда WHERE не HAVING өрнектерінде есептеу үшін бір не бірнеше ерекше мәндер жинағын қамтамасыз ету үшін SELECT нұсқауын пайдаланыңыз.

Ішкі сұрауда ізделген әр жазбамен салыстыруды қанағаттандыратын негізгі сұрауда жазбалар іздеу үшін ANY не SOME синонимдер предикаттарды пайдаланыңыз. Келесі мысал 25 пайыз не одан көбірек жеңілдікпен сатылған тауардан бірлік бағасы жоғарырақ барлық өнімдерді қайтарады:

SELECT * FROM Products WHERE UnitPrice > ANY (SELECT UnitPrice FROM OrderDetails WHERE Discount >= .25);

ALL предикатты ішкі сұрауда табылған барлық жазбалармен салыстыруды қанағаттандыратын негізгі сұрауда жазбаларды табу үшін пайдаланыңыз. Егер ANY предикатын ALL алдындағы мысалда өзгерткен болсаңыз, 25 пайыз не одан көбірек жеңілдікпен сатылған барлық өнімдерден бірлік бағасы жоғарырақ тауарларды ғана сұрау қайтарады. Бұл одан да шектеулі.

IN предикатын тек тең мәні бар кейбір жазбалар ішкі сұрауда бар үлкен сұраудағы жазбаларды іздеу үшін пайдаланыңыз. Келесі мысал барлық өнімдерді 25 пайыз не одан көп жеңілдікпен қайтарады:

SELECT * FROM Products WHERE ProductID IN (SELECT ProductID FROM OrderDetails WHERE Discount >= .25);

Керісінше, NOT IN предикатын ішкі сұрауда тең мәні бар жазбалар жоқ негізгі сұраудағы жазбаларды ғана іздеу үшін пайдалануыңызға болады.

EXISTS предикатын (қосымша NOT сақталған сөзбен) ішкі сұрау кез келген жазбаларды қайтара ма екенін анықтау үшін Шын/өтірік салыстыруларды пайдаланыңыз.

Сондай-ақ, FROM тіркелген кестелерге сілтеме жасау үшін кесте атауын бүркеншік аты (SQL) iішкі сұрауда пайдалануыңызға болады. Келесі мысал бірдей лауазымы барлық қызметкерлердің орташа жалақысынан көбірек не бірдей жалақылары қызметкерлер атауларын қайтарады. Қызметкерлер кестесіне «T1» бүркеншік ат берілді:

SELECT LastName, FirstName, Title, Salary FROM Employees AS T1 WHERE Salary >= (SELECT Avg(Salary) FROM Employees WHERE T1.Title = Employees.Title) Order by Title;

Алдындағы мысалда AS қордағы сөз қосымша болып табылады.

Кейбір ішкі сұраулар қарсы сауал — әсіресе, предикаттар ретінде рұқсат етілген ( олар WHERE өрнегінде). Ішкі сұраулар нәтижелер ретінде (олар SELECT тізімінде) қарсы кесте сұрауларында рұқсат етілмеген.



Дағдыларды жетілдіру
Оқыту курсымен танысыңыз
Жаңа мүмкіндіктерге бірінші болып қол жеткізу
Office Insider бағдарламасына қосылу

Осы ақпарат пайдалы болды ма?

Пікіріңіз үшін рақмет!

Пікіріңізге рақмет! Сізді Office қолдау көрсету қызметіндегі агенттердің бірімен байланыстырған жөн болуы мүмкін.

×