John
John

Reputation: 13719

SQL IF table A is empty copy columns from table B

So here is the perfectly working query I need to run though short of the necessary condition:

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

Unfortunately not all the databases are synced properly so some of the tables are populated and some are not.

How do I INSERT data from table A to table B IF table A is empty?

A couple queries I've tried:

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

...as well as:

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

Upvotes: 1

Views: 245

Answers (1)

Giorgos Betsos
Giorgos Betsos

Reputation: 72165

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)

The SELECT of the above INSERT statement will return all pages records unless there is at least on record in content table.

Demo with empty table | Demo with not empty table

Upvotes: 1

Related Questions