512 – La sottoquery ha restituito più di un valore. Ciò non è consentito per le sottoquery che seguono i caratteri =, !=, <, <= , >, >= o utilizzate come espressione.

0
(0)

Messaggio

Codice: 512

Messaggio in italiano: La sottoquery ha restituito più di un valore. Ciò non è consentito per le sottoquery che seguono i caratteri =, !=, <, <= , >, >= o utilizzate come espressione.

Messaggio in inglese: Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

Spiegazione

Quando si usa una subquery in un elenco di selezione, questa deve restituire solo un campo con una riga (cioè un valore scalare).

Lo stesso vale quando si confronta un valore con il risultato di una subquery con operatori di uguaglianza.

Esempio:

SELECT (SELECT Campo1 FROM TABELLA)

questa query può restituire più di una riga nella subquery per ogni riga della query esterna.

Esempio:

SELECT *
FROM tabella
WHERE id = (SELECT Campo1 FROM tabella WHERE Campo2 = 'ABC')

Nel caso in cui non si abbia la certezza che la subquery restituisce una sola riga (magari perché il Campo2 dell’esempio è unico), è possibile che la subquery restituisca più di una riga, e in questo caso il confronto con il campo id sarebbe impossibile.

Causa

Si è inserita nell’elenco di campi della SELECT o a destra di un operatore di uguaglianza una subquery che restituisce più di una riga, e questo non è possibile.

Soluzione

Se è sufficiente che la subquery restituisca un solo valore, è possibile usare TOP 1.

Esempio:

SELECT (SELECT TOP 1 Campo1 FROM TABELLA)

Se la subquery restituisce lo stesso valore ripetuto molte volte, si può aggirare il problema usando DISTINCT.

Esempio:

SELECT (SELECT DISTINCT Campo1 FROM TABELLA)

Nota: a meno che la subquery non sia estremamente banale, con questa sintassi è possibile degradare molto velocemente le prestazioni della query.

Hai trovato utile questo contenuto?

Valutazione: 0 / 5. Voti: 0

Vota per primo questo contenuto

Ci dispiace che tu abbia trovato inutile o sbagliato questo contenuto

Lasciaci un messaggio

Come possiamo migliorare?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Moderazione dei commenti attiva. Il tuo commento non apparirà immediatamente.