2010-03-23 6 views
3

J'ai une table posts qui pourrait ressembler à ceci:MySQL: Copier un champ à une autre table

id | title | body | created | .. 
------------------------------------------- 

Je voudrais utiliser la fonction de recherche booléenne qui est offert par une table MyISAM, mais la table posts est InnoDB. Donc, j'ai créé « post_contents » une autre table qui ressemble à ceci:

post_id | body 
-------------------- 

Ce tableau est déjà rempli avec des contenus et je peux utiliser la recherche booléenne. Cependant, je dois également déplacer le champ title dans la table post_contents, puis copier les données de titre existantes dans le nouveau champ.

Je connais la syntaxe INSERT .. SELECT, mais je ne semble pas être en mesure de créer la requête correcte.

Répondre

2

J'ai trouvé un moyen:

Je copiais le tableau post_contents-pc et tronqué les données existantes dans post_contents. Ensuite, je demande que

INSERT INTO post_contents (post_id, title, body, created, modified) 
SELECT post.id, post.title, pc.body, pc.draft, pc.created, pc.modified 
FROM posts 
INNER JOIN pc ON post.id = pc.post_id 

Peut-être est utile pour les gens qui

2

Avez-vous essayé

insert into post_contents (post_id, body) select id, body from posts; 

Ou est la colonne post_id dans la table post_contents générée différemment?

+0

Merci pour la réponse rapide. Je viens d'essayer, mais je reçois un '# 1062 - Dupliquer l'entrée '1' pour la clé 'PRIMARY'' Le corps du corps existe déjà et est rempli dans la nouvelle table (je veux ajouter le champ de titre), donc je probablement besoin d'une requête UPDATE ?! – harpax

+0

Désolé, je ne pouvais pas dire à partir de votre question que la deuxième table avait déjà des données que vous deviez faire correspondre. – MJB

+0

mon mauvais .. J'ai des difficultés à m'exprimer en anglais :) Votre réponse m'a toujours conduit dans la bonne direction -> merci – harpax

Questions connexes