MySQL insert into table avec incrémentation automatique lors de la sélection d'une autre table
J'ai une table avec un auto-incrément de clé primaire:
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)
);
Je souhaite remplir cette table à partir de pièces d'un autre tableau:
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;
J'obtiens un message d'erreur qui indique que le nombre de colonnes ne correspondent pas, ce qui est cause de la clé primaire (qui est une auto-incrémenté de la valeur et n'a donc pas besoin d'être réglé). Comment puis-je contourner ce problème?
OriginalL'auteur CodeKingPlusPlus | 2013-07-21
Vous devez vous connecter pour publier un commentaire.
Vous devez explicitement la liste des colonnes de la
insert
déclaration:Aussi, je pense qu'il vaut mieux utiliser le formulaire de jointures explicites, plutôt que de imbriqués sélectionne:
Ce qui souvent (mais pas toujours) permet à l'optimiseur de trouver le meilleur plan de requête.
OriginalL'auteur Gordon Linoff
Il vous suffit de définir la clé primaire de
NULL
lors de l'insertion.OriginalL'auteur Styphon