Ho creato due tabelle, T1 e T2 con una colonna ciascuna, rispettivamente abc e xyz. Ho inserito 2 righe (valori numerici 1 e 2) in ogni tabella.Elimina istruzione - Query secondaria deve generare un errore
Quando si esegue il comando "select abc from t2"
, viene generato un errore che indica che la colonna abc non esiste nella tabella T2. Tuttavia, quando eseguo il comando "delete from t1 where abc in (SELECT abc from t2);"
, vengono cancellate 2 righe.
Non dovrebbe fallire l'eliminazione poiché ho utilizzato la stessa istruzione che non è riuscita nella sottoquery?
creare tabella t1 (numero abc); --Tabella creata
creare tabella t2 (numero xyz); --Tabella creata
inserire in valori t1 (1); - Una riga inserita
inserire in valori t1 (2); - Una riga inserita
inserire in valori t2 (1); - Una riga inserita
inserire in valori t2 (2); - Una riga inserita
SELECT abc da t2; --ORA-00904 -> Perché la colonna abc non esiste in t2
eliminare da t1 dove abc in (SELECT abc da t2); --2 righe eliminate
Suppongo che sia dovuto al fatto che 'abc' nell'istruzione' DELETE' significa 'abc' in' t1' – luiges90
provare a eseguire una selezione nell'ultima query per confermare quali sono le righe che vengono restituite, quindi Avremo un'idea migliore che i valori abc sono stati restituiti –
Grazie per le vostre risposte. Quando uso l'alias "cancella da t1 dove abc in (SELEZIONA t2.abc da t2), genera un errore, ma non dovrebbe lanciare un errore anche senza quello in cui ho usato" select abc from t2 "? – Orangecrush