J'ai vu une déclaration de suppression écrite dans le format ci-dessous et j'ai besoin d'aide pour la comprendre.
create table t1 (id int); create table t2 (id int); insert into t1 values(1); insert into t1 values(2); insert into t2 values(1); delete t1 from t2 where t1.id = t2.id;
3 Réponses :
Vous devez écrire une jointure comme indiqué ci-dessous pour supprimer l'enregistrement qui se trouve dans les deux tables.
Vous pouvez apprendre plus en détail ici à Supprimer et mettre à jour des lignes à l'aide d'une jointure intérieure dans SQL Server . P>
delete t1 from Firsttable t1 inner join Secondtable t2 on t1.id = t2.id where <put your condition here>
Merci, même je pensais à la même ligne, mais ce que j'ai écrit en question est un code de production. Je ne sais pas comment il fonctionne dans SQL Server.
@Raj J'ai pris T1 et T2 comme alias de table que vous pouvez également donner le nom réel. Vérifiez la démo.
Ce n'est pas sur la façon d'écrire, je suis Développeur ORACLE SQL. Pour un bug lié au code SQL Server, j'antiliserais la procédure stockée et j'ai vu une instruction DELETE dans ce format. Cela fonctionne bien mais je suis curieux de savoir comment cela fonctionne dans SQL Server.
@Raj Il peut y avoir des façons différentes telles que la jointure interne Supprimer, en utilisant Exist ou en utilisant où comme vous l'avez écrit. Je pense que vous devriez aller à la documentation.
the Supprimer la déclaration a la syntaxe suivante:
DELETE t1 FROM t2 WHERE t1.id = t2.id
Ce n'est pas sur la façon d'écrire, je suis Développeur ORACLE SQL. Pour un bug lié au code SQL Server, j'antiliserais la procédure stockée et j'ai vu une instruction DELETE dans ce format. Cela fonctionne bien mais je suis curieux de savoir comment cela fonctionne dans SQL Server.
Il peut être déroutant car vous pouvez faire référence à une table ou à un alias d'une table à supprimer avant le de code>. Si c'est une table, vous pouvez utiliser ses colonnes pour rejoindre ou filtrer dans le où code> (sans le répéter après le à partir de code>), si c'est un alias, s'il s'agit d'un alias, alors vous devez mentionner le Table appropriée avec l'alias dans le de code>.
Et depuis l'addition de CTES, il est généralement préférable d'écrire une sous-requête CTE et de cibler cela dans votre Supprimer ou mettre à jour.
Vous pouvez utiliser TYPE create table t1(id int);
create table t2(id int);
Le script de votre question fonctionnera si vous spécifiez un type de données valide dans le tableau
Créer une table code>Le nombre dans les deux tableaux doit être INT au lieu du nombre.
Raj Veuillez vérifier cela, il fonctionne dbfiddle.uk/...
"J'ai essayé ci-dessus dans la base de données SQL Server en ligne, mais le script échoue." - Veuillez soumettre des bugs avec un rapport d'erreur. Voter à fermer jusque-là en raison de la qualité extrêmement basse.