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中):消息102,级别15,状态1,行1
','。附近的语法不正确
答案 0 :(得分:3)
删除用于删除整行..不清空字段(因此不支持列名,也不支持分组)
所以
DELETE EMPLOYEE
FROM EMPLOYEE a JOIN DEPARTMENT b ON a.Department_ID = b.Department_ID
WHERE b.Department_Name = 'Sales'
如果您想编辑记录,请致电UPDATE
答案 1 :(得分:1)
“删除”后面应该是行,而不是单个列。你应该这样做:
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
答案 2 :(得分:1)
您无法在delete语句中指定列。它应该是DELETE FROM <tablename>
。此外,如果要使用Join删除,则需要指定要从中删除的表。所以,像:
DELETE FROM a
FROM <tablename> a
JOIN <othertable> b ON a.<col> = b.<col>
答案 3 :(得分:0)
DELETE在行级别上工作,因此SQL Server抱怨您已指定列。
这是DELETE的语法页面: 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语句以检索所需的所有行。
答案 4 :(得分:0)
我相信您正在尝试删除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'
此查询将删除Employee_Firstname
部门中所有员工的Employee_LastName
和Sales
列的值(设置为空)。
答案 5 :(得分:0)
基本语法是 从中删除 条件
来自table_name的是您可以根据您的要求创建任何子查询的地方。