CREATE TABLE EMPL_DEMO AS SELECT * FROM employees WHERE 1=2;
Ich habe diese Aussage irgendwo im Internet gelesen, konnte sie aber nicht verstehen WHERE 1=2.
Kann jemand das bitte erklären?
CREATE TABLE EMPL_DEMO AS SELECT * FROM employees WHERE 1=2;
Ich habe diese Aussage irgendwo im Internet gelesen, konnte sie aber nicht verstehen WHERE 1=2.
Kann jemand das bitte erklären?
Antworten:
Diese Art von Befehl wird normalerweise verwendet, um die Struktur einer Tabelle in eine andere zu kopieren. In diesem Fall EMPL_DEMOhat die gleiche Spaltenstruktur von employees, mit Ausnahme der Schlüssel oder Einschränkungen .
Das wird 1=2immer ausgewertet, Falsewodurch verhindert wird, dass Sie eine der Zeilen kopieren.
CREATE TABLE new_table LIKE old_table
LIKE old_tableist kein SQL Server-Konstrukt ...
nameund typeder Spalte. Bedenken Sie, dass es einige andere Eigenschaften gibt, die auch als Spaltenstruktur gelten - z. B. Standardwert, Alias usw.;).
CREATE TABLE (Neue Tabelle erstellen)
EMPL_DEMO (EMPL_DEMO genannt)
AS (Mit den Daten und der Struktur von)
SELECT * FROM employees WHERE 1=2; (Alles in Mitarbeitern mit 1 = 2. Da 1 niemals 2 ist - kopieren Sie die Struktur und alle 0 übereinstimmenden Zeilen)
Kopieren Sie im Wesentlichen die Struktur und nicht die Daten.
Diese Syntax macht dasselbe, aber es ist offensichtlicher, dass sie eine Tabelle mit derselben Struktur ohne Daten erstellt.
CREATE TABLE EMPL_DEMO AS SELECT * FROM employees limit 0;
LIMIT. Aber es scheint, dass MSSQL es nicht hat (was mir als guter Grund erscheint, MSSQL einfach nicht zu verwenden). Anscheinend haben sie TOP, aber Google-Ergebnisse haben so viele Leute, die das nicht verwenden, also gibt es wahrscheinlich einige Hijink, die es umgeben.
Dies kann nützlich sein, um die Struktur einer Tabelle ohne deren Einschränkungen, Schlüssel, Indizes, Identitätseigenschaften und Datenzeilen zu kopieren .
Diese Abfrage erstellt eine EMPL_DEMOTabelle ohne Zeilen, die aus der Mitarbeitertabelle kopiert wurden, da die WHERE 1=2Bedingung immer als ausgewertet wird FALSE.
CREATE TABLE EMPL_DEMO
AS
SELECT *
FROM employees
WHERE 1=2;
Vertraue auf Google, mein Freund. Am Ende des ersten Ergebnisses, wenn Sie diese Aussage googeln :
Zum Beispiel:
CREATE TABLE suppliers AS (SELECT * FROM companies WHERE 1=2);Dies würde eine neue Tabelle mit dem Namen Lieferanten erstellen, die alle Spalten aus der Unternehmenstabelle, jedoch keine Daten aus der Unternehmenstabelle enthält.
Orakel:
CREATE TABLE EMPL_DEMO AS SELECT * FROM employees WHERE 1=2; //just structure not data
CREATE TABLE EMPL_DEMO AS SELECT * FROM employees WHERE 1=1; //ststructure and data
Besseres Verständnis in der Teradata-Datenbank:
CREATE TABLE EMPL_DEMO AS Memployees with no data; //structure
CREATE TABLE EMPL_DEMO AS Memployees with data; //structure and data
In SQL Server
Wählen Sie * in Tabelle1 aus Tabelle2 aus, wobei 1 = 2 (nur Struktur)
Wählen Sie * in Tabelle1 aus Tabelle2 aus, wobei 1 = 1 (Struktur mit Daten)