Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Delete изчиства таблицата вместо грешка

Това работи според очакванията, поради корелацията между ColumnA във вътрешната заявка и външната.

Този често използван модел на корелирана заявка е валиден

DELETE TableA WHERE NOT EXISTS (select * from TableB where TableB.ID=TableA.ID)

Той премахва записи в TableA, които нямат зависим запис в TableB.

Показва, че можете да препращате към колони TableA в корелирана заявка. Във вашата заявка

delete TableA where ColumnA in (select ColumnA from TableB)

Вътрешната заявка се произвежда

  • един ред за всеки запис в TableB
  • една колона за всеки ред, чиято стойност е ColumnA от външната заявка

Така че DELETE преминава



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Импортирайте колони на електронни таблици на Excel в базата данни на SQL Server

  2. SQL заявка за получаване на обобщен резултат в разделители на запетая заедно с група по колона в SQL Server

  3. Алгоритъм за избягване на SQL инжектиране на MSSQL сървър от C# код?

  4. Как да използвате семантично търсене в SQL Server

  5. Мога ли да използвам няколко курсора в една връзка с pyodbc и MS SQL Server?