2016-11-09 4 views
-1
  • Book (Bid, Preis)

keine zwei Bücher den gleichen Preis haben.Ausführung von SQL-Abfrage mit Zählfunktion mit in where-Klausel

SELECT bid 
FROM Book t1 
WHERE (SELECT count(*) 
     FROM Book t2 
     WHERE t1.price > t2.price) < 3 

Bitte erläutern Sie kurz die Ausführung mit einem Beispiel und Ergebnis der obigen Abfrage.

+0

i eigentlich nur wollen zu wissen, wie diese Abfrage intern ausgeführt wird? –

+0

SO ist für tatsächliche Programmierprobleme, nicht für Erklärungen wie Code funktioniert. Wählen Sie ein SQL-Tutorial, es gibt viele online. – HoneyBadger

+1

Warum experimentierst du nicht mit EXPLAIN? –

Antwort

0

Für jedes Buch in Tabelle Book zählt die korrelierte Unterabfrage in der WHERE-Klausel die Anzahl der Bücher in Book, die einen Preis haben, der streng niedriger ist. Wenn diese Zahl kleiner als drei ist, wird dieses Buch ausgewählt.

Grundsätzlich ist die Abfrage die Antwort auf: Wählen Sie alle Bücher, für die es höchstens zwei Bücher mit niedrigeren Preisen gibt.

Dies könnte geschrieben wurden einfacher wie folgt (vorausgesetzt, dass keine zwei Preise die gleichen für jedes Paar von Bücher sind):

  • SQL Server:

    SELECT TOP 3 bid FROM book ORDER BY price ASC; 
    
  • ANSI/ISO SQL : 2008

    SELECT bid FROM book ORDER BY price ASC 
    FETCH FIRST 3 ROWS ONLY