Sto leggendo un libro su SQL.Cosa significa questa query?
In quel libro, ho visto strana domanda sotto:
SELECT * into mycustomer from customer WHERE 1=2
In questa query, ciò che è "WHERE 1 = 2"?
Sto leggendo un libro su SQL.Cosa significa questa query?
In quel libro, ho visto strana domanda sotto:
SELECT * into mycustomer from customer WHERE 1=2
In questa query, ciò che è "WHERE 1 = 2"?
Di solito utilizzato per copiare la struttura di una tabella ad in un altro, come nel tuo caso.
SELECT * INTO mycustomer FROM customer WHERE 1=2
Questo codice crea una struttura identica a ping Customer
nella nuova tabella MyCustomer
. Nota che in SQL Server, i vincoli non vengono copiati; quindi probabilmente avresti bisogno di ricreare i vincoli.
1=2
sarà sempre false
.
Questo è un modo per specificare una clausola WHERE
che verrà sempre valutata su false
.
Una cosa simile è WHERE 1=1
che viene sempre valutata a true
.
+1 per aggiungere la 'cosa simile' 1 = 1. –
WHERE 1=2
È impossibile che la condizione sia sempre falsa. È un errore di battitura? Forse è per cancellare un carico di variabili? Come SELECT INTO metterà tutte le colonne in @COLUMNNAME vars
suo nulla, ma proprio come un injecttion SQL nel tuo caso sarà sempre false se 1 = 1 rispetto al suo vero e restituirà tutti i dati dei clienti
Ritorno ai vecchi tempi in cui stavo usando ASP classico, ho usato la struttura "WHERE 1 = 2" per recuperare le definizioni di colonna della tabella e non il suo contenuto. Oggigiorno ci sono modi migliori per recuperare le definizioni di colonne usando un framework di mappatura di oggetti.
La mia ipotesi è che il libro che state leggendo è leggermente datata, o il contesto di questa query è fuori luogo.
Come tutti hanno detto di seguito, la condizione è sempre falsa. Ho visto che la tecnica utilizzata con SQL dinamico come un modo per ottenere un descrittore per le colonne nella query - ma non si dispone quindi di una clausola INTO. –
Jonathan: la clausola INTO viene utilizzata per creare una nuova tabella 'mycustomer' interrogando' cliente'. In questo caso non verrà restituita alcuna riga, quindi verrà creata una tabella vuota. Questo è un idioma per copiare una struttura di tabella. – Gabe