sql-запрос на удаление



delete  a.Employee_LastName, a.Employee_Firstname 
FROM EMPLOYEE a JOIN DEPARTMENT b on a.Department_ID = b.Department_ID
where b.Department_Name='Sales'
Group by a.Employee_LastName, a.Employee_Firstname, b.Department_Name


Можете ли вы объяснить, что я делаю не так?
ошибка (в sql server 2008): Msg 102, Уровень 15, состояние 1, строка 1
Неправильный синтаксис рядом с ','.
514   6  
sql

6 ответов:

Delete предназначен для удаления целых строк.. не очищает поля (, поэтому имена столбцов не поддерживаются, также нет группировки)

Итак

DELETE EMPLOYEE
FROM   EMPLOYEE a JOIN DEPARTMENT b ON a.Department_ID = b.Department_ID 
WHERE  b.Department_Name = 'Sales' 

Если вы хотите редактировать записи, то нам UPDATE

Невозможно указать столбцы в инструкции delete. Это должно быть DELETE FROM <tablename>. Кроме того, если вы хотите удалить с помощью соединения, вам нужно указать, из какой таблицы вы удаляете. Итак, что-то вроде:

DELETE FROM a FROM <tablename> a JOIN <othertable> b ON a.<col> = b.<col>

За словом"удалить" должны следовать строки, а не отдельные столбцы. Вы должны сделать:

delete a 
FROM    EMPLOYEE a JOIN DEPARTMENT b on a.Department_ID = b.Department_ID 
where b.Department_Name='Sales' 
Group by a.Employee_LastName, a.Employee_Firstname, b.Department_Name

DELETE работает на уровне строк, поэтому SQL Server жалуется, что вы указали столбцы.

Вот страница синтаксиса для удаления: http://msdn.microsoft.com/en-us/library/ms189835.aspx

Если вы просто пытаетесь очистить значения в этих столбцах, вы должны использовать инструкцию UPDATE: http://msdn.microsoft.com/en-us/library/aa260662 (v=sql.80).aspx

Если вы хотите удалить строки, основанные на этом предложении JOIN и WHERE, вам нужно будет написать Оператор DELETE с подзапросом для извлечения всех нужных строк.

Я полагаю, что вы пытаетесь удалить значения из столбцов, которые являются update Не delete. используйте запрос update, как показано ниже:

    update a
    set a.Employee_LastName = null,
          a.Employee_Firstname = null
    from EMPLOYEE a INNER JOIN DEPARTMENT b
    ON a.Department_ID = b.Department_ID
    where b.Department_Name='Sales' 

Этот запрос удалит значения (установленные в null) из столбцов Employee_Firstname и Employee_LastName для всех сотрудников в отделе Sales.

Основной синтаксис: удалить из где условие

From table_name-это место, где u может создать любой подзапрос также в соответствии с вашим требованием.

Comments

    Ничего не найдено.