Here Ho posto la domanda sulla query non funzionante.valore> = tutto (selezionare v2 ...) produce risultati diversi dal valore = (selezionare max (v2) ...)
Accidentalmente (con l'aiuto di una risposta) ho trovato come rendere la soluzione giusta. Il problema è che non capisco perché producono risultati diversi.
Così, il database ha questo schema:
E sto ricerca per tutti i modelli dal PC
, Printer
e Laptop
con il prezzo più alto . Tutte queste tabelle possono avere una colonna non univoca model
, poiché gli articoli con diverso code
potrebbero avere lo stesso modello.
mia soluzione originale era:
with model_price(model,price) as (
select model,price
from PC
union
select model,price
from Laptop
union
select model,price
from Printer
)
select model
from model_price
where price >= all(select price from model_price)
ha dato risultato sbagliato - il sistema ha restituito * Wrong number of records (less by 2)
.
La soluzione corretta che funziona è questo:
with model_price(model,price) as (
select model,price
from PC
union
select model,price
from Laptop
union
select model,price
from Printer
)
select model
from model_price
where price = (select max(price) from model_price)
Quindi, perché la soluzione con all
produce risultato diverso?
A proposito di motore di SQL: Now we use Microsoft SQL Server 2012 on the rating stages, and MySQL 5.5.11, PostgreSQL 9.0, and Oracle Database 11g on the learn stage in addition.
Quindi non so quale motore esattamente usano per asini questo esercizio.
Qualsiasi 'NULL's nei dati? 'seleziona 1 dove 1> = ALL (seleziona unione nulla seleziona 0)' non restituisce righe. –
Siamo spiacenti, non conosco i dati per il secondo database (questo è fatto intenzionalmente per coloro che fanno esercizi non imbrogliano). Non riesco nemmeno a vedere il risultato per le query sul secondo DB, solo riassume ciò che è sbagliato, ad es. '* Numero di record errato (meno di 2)'. – ovgolovin