shmuel613, es wäre besser, Ihre ursprüngliche Frage zu aktualisieren, anstatt zu antworten. Es ist am besten, wenn es einen einzigen Ort gibt, der die vollständige Frage enthält, anstatt sie in einer Diskussion auszubreiten.
Bens Antwort ist vernünftig, außer dass er ein „nicht“ zu haben scheint, wo er keins haben möchte. Löschen der Tabelle nur, wenn dies nicht der Fall ist exist ist nicht ganz richtig.
Sie werden in der Tat mehrere Anweisungen benötigen. Entweder bedingt erstellen und dann füllen:
- TEMPORÄRE TABELLE ERSTELLEN, WENN fubar NICHT VORHANDEN IST ( id int, name varchar(80) )
- TRUNCATE TABLE fubar
- INSERT INTO fubar SELECT * FROM barfu
oder einfach löschen und neu erstellen
- DOP TABLE WENN fubar VORHANDEN
- CREATE TEMPORARY TABLE fubar SELECT id, name FROM barfu
Bei reinem SQL sind das Ihre beiden wirklichen Lösungsklassen. Das Zweite gefällt mir besser.
(Mit einer gespeicherten Prozedur könnten Sie sie auf eine einzelne Anweisung reduzieren. So etwas wie:TruncateAndPopulate(fubar) Aber wenn Sie den Code für TruncateAndPopulate() schreiben, werden Sie mehr Zeit damit verbringen, als nur die obige SQL zu verwenden.)