2012-12-28 2 views
1

Je viens d'ajouter des utilisateurs dans mon installation Wordpress à partir d'un autre CMS, et maintenant j'ai besoin pour chaque identifiant d'utilisateur en wp_users d'insérer une nouvelle valeur avec son identifiant dans wp_usermeta. Y a-t-il des idées pour ça en SQL?INSERT sur chaque ID de SELECT

+2

Quelle valeur avez-vous besoin d'insérer? Quelque chose comme 'INSERT INTO wp_usermeta (id_utilisateur, meta_key, meta_value) SELECT id_utilisateur, 'nom_clé', 'nouvelle valeur' ​​FROM wp_users' qui utilise un 'INSERT INTO ... SELECT' avec des valeurs littérales de chaîne ... –

+0

@Kirix: S'il vous plaît, les backticks sont pour _code_, pas pour les noms propres. –

+0

@MichaelBerkowski remercie l'homme – Kin

Répondre

1

Vous pouvez utiliser une instruction SELECT comme source de valeurs pour une instruction INSERT, comme ceci:

INSERT IGNORE INTO wp_usermeta (id) 
SELECT u.id FROM wp_users u 

Le mot-clé IGNORE indique à MySQL pour insérer les lignes qu'il peut, et si toutes les lignes que nous essayons d'insérer sont des lignes "dupliquées" (lancer une exception), puis laissez simplement ces lignes ne pas être insérées, et ignorez les erreurs qui seraient autrement lancées.

0

Essayez ceci:

INSERT INTO wp_usermeta(id) 
SELECT id FROM wp_users; 
0

Faisant usage de chaînes littérales entre guillemets simples, vous pouvez utiliser la syntaxe INSERT INTO ... SELECT pour sélectionner simultanément tous les identifiants de l'utilisateur à partir wp_users et insérer des valeurs de chaîne dans wp_usermeta:

INSERT INTO wp_usermeta (user_id, meta_key, meta_value) 
    SELECT 
    wp_users.ID, 
    /* Single-quoted string literals for meta key and value... */ 
    /* Substitute the key and value you want to insert */ 
    'new_meta_keyname', 
    'new_meta_value' 
    FROM wp_users