Bitte beachten Sie bei der Verwendung von Unterabfragen zunächst, dass Unterabfragen auf mehreren Ebenen verschachtelt sein können und in Klammern () eingeschlossen werden müssen.
Grundlegende Einführung
1, wobei: Unterabfrage im Allgemeinen eine einzelne Zeile, eine einzelne Spalte, eine einzelne Zeile, mehrere Spalten, mehrere Zeilen und eine einzelne Spalte zurückgibt
2, mit : Unterabfrage gibt eine einzelne Zeile und einzelne Spalte zurück, während Gibt an, dass statistische Funktionen verwendet werden sollen
3, von: Unterabfrage gibt mehrzeilige und mehrspaltige Daten zurück (Tabellenstruktur); 🎜>4, wählen Sie: Gibt eine einzelne Zeile und eine einzelne Spalte zurück (im Allgemeinen nicht verwendet);
Beispieldetails
wobei (Datenzeilen filtern):
a: Mitarbeiter abfragen Informationen, die unter dem Durchschnittsgehalt des Unternehmens liegen.
Die obige Abfrage gibt eine einzelne Zeile und eine einzelne Spalte zurück, die als Filterbedingung der where-Klausel verwendet werden könnenselect * from emp where sal<(select avg(sal) from emp);
b: Fragen Sie die Informationen des ersten Mitarbeiters ab, der von eingestellt wurde das Unternehmen.
C: Informationen zu Mitarbeitern abfragen, die den gleichen Job wie Scott haben und das gleiche Gehalt haben.select * from emp where hiredate= (select MIN(hiredate) from emp);in: bezieht sich auf denselben Inhalt, der von der Unterabfrage zurückgegeben wird.
select* from emp where (job,sal) =( select job,sal from emp where ename ='scott') and ename <>'scott';nicht in:
select * from emp where sal in (select sal from emp where job = 'manager');Die Unterabfrage darf nicht null sein.
select* from emp where sal not in(select sal from emp where job='manager');
beliebig:
ist größer als der von der Unterabfrage zurückgegebene Maximalwertselect* from emp where sal = any(select sal from emp where job='manager'); select* from emp where sal > any(select sal from emp where job='manager');ist kleiner als der von der Unterabfrage zurückgegebene Maximalwert
select* from emp where sal < any(select sal from emp where job='manager');
alle:
alle: größer als der von der Unterabfrage zurückgegebene Maximalwert Fragen Sie die Berufsbezeichnung, die Anzahl der Positionen und das Durchschnittsgehalt ab, das über dem Durchschnittsgehalt des Unternehmens liegt. Fragen Sie die Nummer, den Namen, die Position und den Abteilungsnamen jedes Mitarbeiters ab. von (wichtiger Punkt): Fragen Sie den Namen, den Standort und die Anzahl der Personen in jeder Abteilung ab. Antwort: In der tatsächlichen Arbeit besteht der Hauptzweck von Unterabfragen darin, das Leistungsproblem von Abfragen mit mehreren Tabellen zu lösen, weshalb sie in der Entwicklung am häufigsten verwendet wird. Die größte Aufgabe besteht darin, das Problem zu lösen, dass kartesische Produkte die Leistung beeinträchtigen, die durch Abfragen mit mehreren Tabellen verursacht werden. Komplexe Abfrage = einfache Abfrage + begrenzte Abfrage + Abfrage mit mehreren Tabellen + statistische Gruppenabfrage + Unterabfrage; Zusammenfassung Das Obige dreht sich hoffentlich um die Oracle-Unterabfrage Der Inhalt dieses Artikels kann für alle beim Erlernen oder Verwenden von Oracle hilfreich sein. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Weitere Artikel zum Oracle-Grundlernen finden Sie auf der chinesischen PHP-Website!
Die Wahrscheinlichkeit, dass die Unterabfrage sehr hoch ist;
mit:select job,count(empno),avg(sal) from emp group by job
having avg(sal)>(select avg(sal) from emp);
select e.empno,e.ename,e.job,
(select d.dname from dept d whered.deptno=e.deptno)from emp e;
select d.dname,d.loc,count(e.empno)
from emp e,dept d
where e.deptno(+)=d.deptno
group by d.dname,d.loc;
Mehrtabellenabfragen und Unterabfragen können Statistiken erzielen. Welche Methode ist also besser? 分步1: select d.deptno,d.dname,d.locfrom dept d;
分步2:select deptno,count(empno)from emp group by deptno;
正确的查询:
select d.deptno,d.dname,d.loc,temp.count
from dept d,(select deptno,count(empno) count from emp
group by deptno) temp
where d.deptno=temp.deptno(+);