MySQL insert into Tabelle mit auto-increment bei der Auswahl aus einer anderen Tabelle
Ich habe eine Tabelle mit einem auto-increment Primärschlüssel:
create table rt_table
(
rtID int PRIMARY KEY AUTO_INCREMENT,
rt_user_id BIGINT, /*user being retweeted*/
rt_user_name varchar(70), /*user name of rt_user_id*/
source_user_id BIGINT, /*user tweeting rt_user_id*/
source_user_name varchar(70), /*user name of source_user_id*/
tweet_id BIGINT, /*fk to table tweets*/
FOREIGN KEY (tweet_id) references tweets(tweet_id)
);
Möchte ich füllen Sie diese Tabelle aus teilen der anderen Tabelle:
insert into rt_table
select rt_user_id, (select user_name from users u where u.user_id = t.rt_user_id),
source_user_id, (select user_name from users u where u.user_id = t.source_user_id),
tweet_id
from tweets t
where rt_user_id != -1;
Bekomme ich eine Fehlermeldung, die besagt die Anzahl der Spalten nicht übereinstimmen, was ist denn der primary key (was ist ein auto-increment Wert und muss daher nicht eingestellt werden). Wie bekomme ich dieses?
InformationsquelleAutor der Frage CodeKingPlusPlus | 2013-07-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie explizit die Liste der Spalten in der
insert
Aussage:Auch, ich denke, es ist besser, form zu verwenden, explizite joins, sondern als geschachtelte selects:
Diese oft (aber nicht immer) hilft dem Optimierer finden Sie die besten Abfrageplan.
InformationsquelleAutor der Antwort Gordon Linoff
Setzen Sie einfach den Primärschlüssel
NULL
während des Einsatzes.InformationsquelleAutor der Antwort Styphon