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

T-SQL Изтрива всички редове от таблица, когато подзаявката е неправилно формирана

Като TableAID не съществува в TableA , заявката използва колоната от TableB . Следователно заявката е същата като:

delete from TableB
where id in (
  select TableB.TableAID
  from TableA
  where GUID = 'fdjkhflafdhf'
)

Така че по същество прави:

delete from TableB
where id in (TableAID)

Ако използвате подзаявки, най-добре е да споменавате имената на таблиците си, когато препращате. Следните хвърля изключение:

 delete from TableB
    where id in (
      select TableA.TableAID
      from TableA
      where TableA.GUID = 'fdjkhflafdhf'
    )

Освен това бих използвал псевдоним, за да знаем към коя заявка се отнасяме:

 delete from TableB
    where id in (
      select a.TableAID
      from TableA a
      where a.GUID = 'fdjkhflafdhf'
    )



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Функция срещу съхранена процедура в SQL Server

  2. Стойностите на колоната за идентичност на SQL сървъра започват от 0 вместо от 1

  3. Използване на променлива в SQL израза LIKE

  4. Как да получите броя на шестте седмици в неделя с помощта на Weekno в SQL Server 2008?

  5. Разлика между sys.objects, sys.system_objects и sys.all_objects в SQL Server