2016-05-20 4 views
1

So, hier ist die perfekt funktionierende Abfrage ich aber an der notwendigen Bedingung ausgeführt werden muß:SQL IF Tabelle A sind leer Kopie Spalten aus der Tabelle B

INSERT INTO content (`id`,`id_pages`,`content`, `date`) 
SELECT `id`, `id`, `content`, `date_modified` FROM `pages`; 

Leider nicht alle Datenbanken synchronisiert sind richtig so einig Die Tabellen sind ausgefüllt und andere nicht. Wie kann ich INSERT Daten von Tabelle A zu Tabelle B IF Tabelle A ist leer?

Ein paar Abfragen Ich habe versucht:

IF (
SELECT count(id) FROM content='0', 
INTO content (`id`,`id_pages`,`content`, `date`) 
SELECT `id`, `id`, `content`, `date_modified` FROM `pages`) 

... sowie:

IF (SELECT count(id) FROM content)=0 
THEN (INSERT INTO content (`id`,`id_pages`,`content`, `date`) 
SELECT `id`, `id`, `content`, `date_modified` FROM `pages`); 
+0

Einige Beispieltabellendaten würden hier einen langen Weg gehen. Können Sie sagen, welche _relation_ verwendet wird, um zu bestimmen, welche Daten von "A" in "B" gezogen werden? –

+0

@TimBiegeleisen Ich glaube nicht, dass Beispieldaten wichtig sind, wenn es um Logik und Syntax geht und jede Tabelle auf die gleiche Weise leer ist - es gibt keine Zeilen. –

+0

Sie möchten die Tabelle 'A' in die Tabelle' B' einfügen, wenn die Tabelle 'A' leer ist? Aber warum? Ich bin verwirrt. – KaeL

Antwort

1

Try this:

INSERT INTO content (`id`,`id_pages`,`content`, `date`) 
SELECT `id`, `id`, `content`, `date_modified` 
FROM `pages` 
WHERE NOT EXISTS (SELECT 1 FROM content) 

Die SELECT der oben INSERT Aussage gibt alle pages Datensätze zurück, es sei denn gibt es mindestens eine Aufzeichnung in content Tabelle.

Demo with empty table | Demo with not empty table

+0

Das hat super funktioniert, danke Giorgos! – John

Verwandte Themen