Как объединить две таблицы с одинаковыми атрибутами? - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть две таблицы, я хочу создать новую таблицу с тем же атрибутом, используя данные из двух таблиц.Ниже приведен код, который я пытаюсь

/* Create a table called NAMES */
CREATE TABLE NAMES(Id integer PRIMARY KEY, Name varchar(100));
CREATE TABLE GAMES(Id integer PRIMARY KEY, Name varchar(100));
CREATE TABLE JJ(Id integer PRIMARY KEY, Name varchar(100));

/* Create few records in this table */
INSERT INTO NAMES VALUES(1,'Tom');
INSERT INTO NAMES VALUES(2,'Lucy');
INSERT INTO NAMES VALUES(3,'Frank');
INSERT INTO NAMES VALUES(4,'Jane');
INSERT INTO NAMES VALUES(5,'Robert');
INSERT INTO GAMES VALUES(7,'Football');
INSERT INTO GAMES VALUES(6,'Rugby');
COMMIT;

/* Display all the records from the table */
SELECT * FROM NAMES;
SELECT * FROM GAMES;
INSERT INTO JJ (Id, Name) VALUES((SELECT * FROM NAMES), (SELECT * FROM GAMES));

SELECT * FROM JJ; 'Error: near line 21: sub-select returns 2 columns - expected 1'

Ответы [ 3 ]

0 голосов
/ 12 декабря 2018

то, как вы пытаетесь объединить две таблицы, не лучше, потому что две разные первичные ключи таблиц могут быть одинаковыми, что приведет к ошибке во время вставки третьей таблицы (дубликат ключа).Я бы предпочел изменить структуру таблицы, сделать все три таблицы первичным ключом автоинкрементом и нажать только имя, а не идентификатор

INSERT INTO JJ ( Name)
select name from (
SELECT name FROM NAMES
union all
SELECT name FROM GAMES
) t
0 голосов
/ 12 декабря 2018

Я бы предложил объявить JJ как:

CREATE TABLE JJ (
    Id integer auto_increment PRIMARY KEY,
    Name varchar(100)
);

insert into jj (name)
    select name from names union all
    select game from games;
0 голосов
/ 12 декабря 2018

это будет работать для оракула:

INSERT INTO JJ (Id, Name)((SELECT * FROM NAMES) union all(SELECT * FROM GAMES));

для mysql:

   insert into JJ select * from Names union all select * from Games;

, но, как сказал Зайнул, когда совпадение двух первичных ключей приведет к ошибке !!!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...