Gain unlimited access to on-demand training courses with an Experts Exchange subscription. They are nested queries that provide data to the enclosing query. Für jede Produkt-Unterkategorie findet die innere Abfrage den maximalen Listenpreis.For each Product subcategory, the inner query finds the maximum list price. Use custom conversational assessments tailored to your job description to identify the most qualified candidates. Unterabfragen können mit einem der folgenden Vergleichsoperatoren eingeleitet werden: (=, < >, >, > =, <, ! Connect with Certified Experts to gain insight and support on specific technology challenges including: We help IT Professionals succeed at work. Subqueries introduced with unmodified comparison operators often include aggregate functions, because these return a single value. For each Product subcategory, the inner query finds the maximum list price. Das folgende Beispiel verdoppelt den Wert in der ListPrice-Spalte der Production.Product-Tabelle.The following example doubles the value in the ListPrice column in the Production.Product table. Other questions can be posed only with subqueries. Die innere Abfrage gibt zunächst die Unterkategorie-ID zurück, die dem Namen "Wheel" entspricht (17). Notice that you can include more than one condition in the WHERE clause of both the inner and the outer query. Eine Unterabfrage kann in der WHERE- oder HAVING-Klausel einer äußeren SELECT-, INSERT-, UPDATE- oder DELETE-Anweisung oder in einer anderen Unterabfrage geschachtelt sein.A subquery can be nested inside the WHERE or HAVING clause of an outer SELECT, INSERT, UPDATE, or DELETE statement, or inside another subquery. SELECT COUNT(thecol) FROM thetable WHERE thecol IS NOT NULL GROUP BY thecol HAVING COUNT(*) > 1 That will give me an output like. A subquery is usually added within the WHERE Clause of another SQL SELECT statement. Wenn in einer Unterabfrage auf eine Spalte verwiesen wird, die nicht in der Tabelle vorhanden ist, auf die in der FROM-Klausel der Unterabfrage verwiesen wird, die jedoch in einer Tabelle vorhanden ist, auf die durch die FROM-Klausel der äußeren Abfrage verwiesen wird, wird die Abfrage ohne Fehler ausgeführt.If a column is referenced in a subquery that does not exist in the table referenced by the subquery's FROM clause, but exists in a table referenced by the outer query's FROM clause, the query executes without error. Die folgende Abfrage sucht die Namen aller Mitarbeiter, die im Vertrieb arbeiten.The following query finds the names of employees who are also sales persons. The following example illustrates how you might use this enhancement. Sofern eine Unterabfrage einen einzelnen Wert zurückgibt, kann sie in allen Fällen auftreten, in denen auch ein Ausdruck verwendet werden kann. Die Ergebnisse schließen alle Kunden ein, mit Ausnahme der Kunden, deren Vertriebsregionen NULL sind, da jede Region, die einem Kunden zugeordnet ist, von einem Vertriebsmitarbeiter betreut wird. It finds the products whose list prices are greater than or equal to the maximum list price of any product subcategory. SQL GROUP BY Clause What is the purpose of the GROUP BY clause? Diese Abfrage ruft eine Instanz des Vor- und Nachnamens der einzelnen Mitarbeiter ab, für die die Prämie in der SalesPerson-Tabelle 5000 beträgt und für die die Mitarbeiter-IDs in der Employee-Tabelle und der SalesPerson-Tabelle übereinstimmen.This query retrieves one instance of each employee's first and last name for which the bonus in the SalesPerson table is 5000 and for which the employee identification numbers match in the Employee and SalesPerson tables. Arten:Those that: Eine Unterabfrage unterliegt den folgenden Beschränkungen:A subquery is subject to the following restrictions: Im folgenden Beispiel wird die BusinessEntityID-Spalte in der WHERE-Klausel der äußeren Abfrage implizit durch den Tabellennamen in der FROM-Klausel der äußeren Abfrage (Sales.Store) qualifiziert.In the following example, the BusinessEntityID column in the WHERE clause of the outer query is implicitly qualified by the table name in the outer query FROM clause (Sales.Store). Allerdings variiert das Limit in Abhängigkeit vom verfügbaren Arbeitsspeicher und der Komplexität anderer Ausdrücke in der Abfrage.Up to 32 levels of nesting is possible, although the limit varies based on available memory and the complexity of other expressions in the query. Werden diese impliziten Annahmen angegeben, lautet die Abfrage folgendermaßen:Here is what the query looks like with these implicit assumptions specified: Es empfiehlt sich immer, den Tabellennamen explizit anzugeben, und es ist immer möglich, implizite Annahmen zu Tabellennamen durch explizite Qualifizierungen zu überschreiben.It is never wrong to state the table name explicitly, and it is always possible to override implicit assumptions about table names with explicit qualifications. This means that the subquery is executed repeatedly, once for each row that might be selected by the outer query. What is the output of that? Sie sollten mit nicht geänderten Vergleichsoperatoren eingeleitete Unterabfragen nur verwenden, wenn Sie bei den Daten und dem vorliegenden Problem sicher sein können, dass die Unterabfrage genau einen Wert zurückgibt. One of the T-SQL language elements supported by SQL Server is the subquery, which is embedded in a SELECT, INSERT, UPDATE or DELETE statement. Die folgende Abfrage stellt ein Beispiel für eine Unterabfrage dar, die mit einem durch ANY geänderten Vergleichsoperator eingeleitet wird.The following query provides an example of a subquery introduced with a comparison operator modified by ANY. Denn ansonsten muss die geschachtelte Abfrage für jedes einzelne Ergebnis der äußeren Abfrage verarbeitet werden, damit die Entfernung von Duplikaten sichergestellt ist. Die Unterabfrage gibt keine tatsächlichen Daten zurück, sondern lediglich den Wert TRUE oder FALSE.The subquery does not actually produce any data; it returns a value of TRUE or FALSE. For starters, a subquery is a SELECT statement that is included or nested within another SQL statement, which can be another SELECT or an INSERT, UPDATE or DELETE. A subquery is a query nested inside another statement such as SELECT, INSERT, UPDATE, or DELETE.. Let’s see the following example. Unterabfragen, die mit dem EXISTS-Schlüsselwort eingeleitet werden, dienen als Test auf das Vorhandensein bestimmter Daten.When a subquery is introduced with the keyword EXISTS, the subquery functions as an existence test. qualifiziert die Spalte in der Unterabfrage implizit mit dem Tabellennamen in der äußeren Abfrage. Wenn Sie beispielsweise den Namen der Produktunterkategorie in die Ergebnisse einschließen möchten, müssen Sie die Variante mit dem Join verwenden.For example, if you want to include the name of the product subcategory in the result, you must use a join version. Auf die gleiche Weise wird diese Abfrage ausgewertet: That is exactly how this query is evaluated: Go through the same procedure with the row for. Use the ANY or SOME predicate, which are synonymous, to retrieve records in the main query that satisfy the comparison with any records retrieved in the subquery. You can … Doing it as an inline query, you original code goes close, just need to move that NavID in the second query to be a condition, not a result... or.... the navcount should be moved (maybe to a having clause). You will see that this row is included in the results. Dementsprechend bedeutet >ANY, dass eine Zeile die Bedingung in der äußeren Abfrage nur erfüllt, wenn der Wert in der Spalte, die die Unterabfrage einleitet, größer als mindestens einer der Werte in der Werteliste ist, die von der Unterabfrage zurückgegeben wird.Similarly, >ANY means that for a row to satisfy the condition specified in the outer query, the value in the column that introduces the subquery must be greater than at least one of the values in the list of values returned by the subquery. In diesem Beispiel wird eine Unterabfrage als Spaltenausdruck namens „MaxUnitPrice“ in einer SELECT-Anweisung verwendet. Sie werden feststellen, dass diese Zeile in den Ergebnissen vorhanden ist.You will see that this row is included in the results. Finally, the outer query uses the contact IDs to find the names of the employees. SQL Server COUNT () is an aggregate function that returns the number of items found in a set. Unterabfragen können in den Anweisungen UPDATE, DELETE, INSERT und SELECT der Datenbearbeitungssprache (Data Manipulation Language, DML) geschachtelt werden.Subqueries can be nested in the UPDATE, DELETE, INSERT and SELECT data manipulation (DML) statements. In manchen Fällen, in denen das Vorhandensein bestimmter Daten überprüft werden muss, wird mit einem Join jedoch eine bessere Leistung erzielt.However, in some cases where existence must be checked, a join yields better performance. The SUM () function returns the total sum of a numeric column. In Abfragen mit einer korrelierten Unterabfrage (auch wiederholte Unterabfrage genannt) hängt die Unterabfrage für ihre Werte von der äußeren Abfrage ab. Comparison operators that introduce a subquery can be modified by the keywords ALL or ANY. Bewirkt die Abfrage also, dass der Test auf Vorhandensein zu TRUE ausgewertet wird? Die folgende Abfrage sucht die Namen aller Mitarbeiter, die im Vertrieb arbeiten. Mai 2017; jonesjunior Lt. Sie benötigt einen Wert für Employee.BusinessEntityID, wobei sich dieser Wert jedoch ändert, während SQL ServerSQL Server unterschiedliche Zeilen in Employee untersucht.It needs a value for Employee.BusinessEntityID, but this value changes as SQL ServerSQL Server examines different rows in Employee. The results include all customers, except those whose sales territories are NULL, because every territory that is assigned to a customer is covered by a sales person. It returns one record for each group. In Transact-SQLTransact-SQL gibt es normalerweise keinen Leistungsunterschied zwischen einer Anweisung, die eine Unterabfrage enthält, und einer semantisch gleichbedeutenden Version ohne Unterabfrage.In Transact-SQLTransact-SQL, there is usually no performance difference between a statement that includes a subquery and a semantically equivalent version that does not. Das bedeutet, dass die Unterabfrage wiederholt ausgeführt wird, und zwar einmal für jede Zeile, die von der äußeren Abfrage ausgewählt werden könnte.This means that the subquery is executed repeatedly, once for each row that might be selected by the outer query. For example, if you want to include the name of the product subcategory in the result, you must use a join version. Subqueries are always enclosed within parentheses.In most cases, subqueries are executed prior to the execution of the main statement where they are nested in, with the exception of correlated subqueries, which are covered some paragraphs below.The result set produced by a subquery is only kept in memory during the life of the m… Otherwise, the nested query must be processed for each result of the outer query to ensure elimination of duplicates. A subquery is a SQL query within a query. Korrelierte Unterabfragen können auch Tabellenwertfunktionen in die FROM-Klausel einschließen, indem ein Verweis auf Spalten aus einer Tabelle in der äußeren Abfrage als ein Argument der Tabellenwertfunktion erfolgt.Correlated subqueries can also include table-valued functions in the FROM clause by referencing columns from a table in the outer query as an argument of the table-valued function. Die innere Abfrage wird ausgewertet und gibt die IDs der Hersteller zurück, die den Bedingungen der Unterabfrage entsprechen. The innermost query returns the sales person IDs. Unterabfragen können an vielen Stellen angegeben werden: Subqueries can be specified in many places: Viele Anweisungen, in denen die Unterabfrage und die äußere Abfrage auf dieselbe Tabelle verweisen, können als Selbstjoin (Verknüpfungen einer Tabelle mit sich selbst) ausgedrückt werden. [ProductCategory] outer_cat INNER … Werden diese impliziten Annahmen angegeben, lautet die Abfrage folgendermaßen: Here is what the query looks like with these implicit assumptions specified: Es empfiehlt sich immer, den Tabellennamen explizit anzugeben, und es ist immer möglich, implizite Annahmen zu Tabellennamen durch explizite Qualifizierungen zu überschreiben. Does this value cause the subquery to return at least one row? Dann findet die äußere Abfrage für jede Region die Kunden, die sich nicht in einer dieser Regionen befinden.The inner query finds all the sales territories covered by sales persons, and then, for each territory, the outer query finds the customers who are not in one. Being involved with EE helped me to grow personally and professionally. Das Ergebnis einer mit IN (oder mit NOT IN) eingeleiteten Unterabfrage entspricht einer Liste aus 0 oder mehr Werten.The result of a subquery introduced with IN (or with NOT IN) is a list of zero or more values. Viele Abfragen können jedoch mithilfe von IN oder einem durch ANY oder ALL geänderten Vergleichsoperator ähnliche Ergebnisse erzielen.Although some queries that are created with EXISTS cannot be expressed any other way, many queries can use IN or a comparison operator modified by ANY or ALL to achieve similar results. Typically, a subquery returns a single row as an atomic value, though it may return multiple rows for comparing values with the IN operator.. You can use a subquery in the SELECT, FROM, WHERE, and JOIN clauses.. SQLite subquery examples Beachten Sie, dass Sie in den WHERE-Klauseln der inneren und äußeren Abfrage mehrere Bedingungen einschließen können.Notice that you can include more than one condition in the WHERE clause of both the inner and the outer query. How do I count number of returned rows in MSSQL within a subquery? Hier ist das Resultset.Here is the result set. It sets the number of rows or non NULL column values. Auch Unterabfragen, die mit dem NOT IN-Schlüsselwort eingeleitet werden, geben eine Liste aus null oder mehr Werten zurück.Subqueries introduced with the keyword NOT IN also return a list of zero or more values. There is no reason to list column names because you are just testing whether rows that meet the conditions specified in the subquery exist. Das folgende Beispiel veranschaulicht, wie Sie diese Erweiterung verwenden können. < oder < =).<, or < =). Open in new window. Da mit einem nicht geänderten Vergleichsoperator eingeleitete Unterabfragen einen einzelnen Wert zurückgeben müssen, dürfen sie, Because subqueries introduced with unmodified comparison operators must return a single value, they cannot include. SELECT column_name(s) FROM table_name_1 WHERE column_name expression_operator{=,NOT IN,IN, <,>, etc}(SELECT column_name(s) from table_name_2); Die folgende Abfrage findet z. The INSERT statement uses the data returned from the subquery to insert into another table. The SQL COUNT () function returns the number of rows in a table satisfying the criteria specified in the WHERE clause. Die folgende Anweisung ermittelt z. Eine Unterabfrage ist eine Abfrage, die in einer anderen Abfrage geschachtelt ist. Subqueries are enclosed in parenthesis. However, in some cases where existence must be checked, a join yields better performance. Aus demselben Grund enthalten die Ergebnisse keinen der Kunden, wenn Sie in dieser Abfrage NOT IN verwenden.For the same reason, when you use NOT IN in this query, the results include none of the customers. Aus demselben Grund enthalten die Ergebnisse keinen der Kunden, wenn Sie in dieser Abfrage, Sie erhalten dieselben Ergebnisse mit dem Operator, When a subquery is introduced with the keyword. First, the inner query returns the subcategory identification number that matches the name 'Wheel' (17). Die innere Abfrage gibt zunächst die Unterkategorie-ID zurück, die dem Namen "Wheel" entspricht (17).First, the inner query returns the subcategory identification number that matches the name 'Wheel' (17). Diese Abfrage ermittelt die Preise aller Mountainbike-Produkte, ihren Durchschnittspreis sowie die Differenz zwischen dem Preis jedes einzelnen Mountainbikes und dem Durchschnittspreis. Explizite Aliasnamen machen deutlich, dass ein Verweis auf Person.Address in der Unterabfrage eine andere Bedeutung als der Verweis in der äußeren Abfrage hat.Explicit aliases make it clear that a reference to Person.Address in the subquery does not mean the same thing as the reference in the outer query.