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
Неправильный синтаксис рядом с ','.
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