2013-02-14 4 views
0

J'ai une requête select que j'utilise pour choisir les contacts dans ma base de données qui n'ont pas été parlés depuis un moment. Je voudrais exécuter une requête INSERT pour entrer dans une note en double pour tous les enregistrements qui sont retournés avec cette requête de sélection ... problème est je ne sais pas exactement comment le faire.mySQL - requête INSERT qui correspond aux mêmes enregistrements que cette requête SELECT?

La requête SELECT elle-même est probablement un peu compliqué. Je veux essentiellement avoir la dernière note de chaque partenaire sélectionné, puis sélectionnez Seuls les partenaires qui n'ont pas obtenu une note d'une certaine date et à l'arrière ... la requête SELECT va:

SELECT * FROM 
(
SELECT * FROM 
(
SELECT 
partners.partners_id, 
partners.CompanyName, 
notes.Note, 
notes.DateCreated 
FROM 
notes 
JOIN 
partners ON notes.partners_id = partners.partners_id 
ORDER BY notes.DateCreated DESC 
) AS Part1 
GROUP BY partners_id 
ORDER BY DateCreated ASC 
) AS Part2 
WHERE 
DateCreated <= '2013-01-15' 

Comment un terme une requête INSERT qui irait seulement dans les mêmes enregistrements que ce SELECT?

L'insert entrerait des documents tels que:

INSERT INTO notes 
(
notes_id, 
partners_id, 
Note, 
CreatedBy, 
DateCreated 
) 
SELECT 
UUID(), 
partners.partners_id, 
'Duplicated message!', 
'User', 
'2013-02-14' 
FROM 
partners 
+1

Voulez-vous dire une requête UPDATE? –

+0

INSERT INTO nom_table (colonne1, colonne2, ...) SELECT (valeur1, valeur2, ...) .... – Slowcoder

Répondre

0

Si vous voulez faire tout cela dans SQL, vous pouvez utiliser une instruction UPDATE.

UPDATE tablename SET note='duplicate' where id in (your statement here); 

Notez que pour que cela fonctionne 'id' doit être une colonne de 'tablename'. Ensuite, votre déclaration doit renvoyer une seule colonne, pas *. La colonne retournée doit être l'ID qui permettra à votre instruction update de savoir quelles lignes mettre à jour dans 'tablename'.

+0

J'ai mis à jour ma question un peu - serait-il possible d'utiliser UPDATE pour entrer dans les enregistrements Je voudrais comme montré dans mon exemple? – Benshack

+0

Je pense que ce que vous voudriez utiliser dans votre cas est l'instruction INSERT INTO. Voici une question qui peut aider: http://stackoverflow.com/questions/25969/sql-insert-into-values-select-from – aglassman

+0

Je sais déjà comment faire des instructions INSERT INTO, mais je ne peux pas sembler o figure sur comment faire pour que l'instruction INSERT INTO ci-dessus fonctionne à l'intérieur des résultats de cette instruction SELECT. Merci pour l'aide. – Benshack