2011-06-20 1 views
0

J'essaye d'employer une commande de sql comme ceci mais elle ne fonctionne pas pour quelques raisons évidentes. Pouvez-vous me dire quelle est la sortie pour ce type de commandes?Sql insérez l'ambiguïté de commande

INSERT INTO ContentToGroup(ContentId,ClassSectionId) 
    VALUES (16, Select ClassSectionId from ClassSectionMaster where ClassId=1) 

Répondre

4
INSERT INTO ContentToGroup (ContentId,ClassSectionId) 
Select 16, ClassSectionId 
from ClassSectionMaster 
where classid = 1 
+0

+1. Je suis venu en deuxième près :) –

+0

Merci Monsieur !!!!!!! – Naresh

2

Vous ne pouvez pas mélanger les INSERT .... VALUES.... avec les instructions select "inline". En utilisant le mot-clé VALUES, vous devez fournir toutes les valeurs en tant que littéraux ou variables SQL.

Soit vous devez sélectionner la première valeur et l'assigner à une variable:

DECLARE @ClassSectionID INT 

SELECT @ClassSectionID = ClassSectionID 
FROM dbo.ClassSectionMaster WHERE ClassId = 1 

INSERT INTO ContentToGroup(ContentId,ClassSectionId) 
VALUES (16, @ClassSectionID) 

ou alors utiliser les autres déclaration SELECT ont montré de fournir toutes les valeurs (et vous omettez le mot-clé VALUES)

2
INSERT INTO ContentToGroup(ContentId,ClassSectionId) Select 16, ClassSectionId from ClassSectionMaster where ClassId=1 
1

Vous devez d'abord supprimer les valeurs lorsque vous utilisez une requête imbriquée. Essayez également de spécifier les noms de la table devant le nom du champ au cas où cela créerait votre ambiguïté.

INSERT INTO ContentToGroup(ContentId,ClassSectionId) 
    SELECT 16, ClassSectionMaster.ClassSectionId 
    FROM ClassSectionMaster 
    WHERE ClassSectionMaster.ClassId=1 
+0

Je pense que SO devrait avoir un "x personnes qui répondent actuellement" affiché quelque part. Puisque nous avons tous posté presque la même réponse – Ben