2
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 行“,”附近的语法不正确。

4

6 回答 6

3

删除用于删除整行..不清空字段(因此不支持列名,也不支持分组

所以

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

如果您想编辑记录,那么我们UPDATE

于 2012-12-19T01:58:53.280 回答
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
于 2012-12-19T01:58:42.673 回答
1

您不能在删除语句中指定列。应该是DELETE FROM <tablename>。此外,如果要使用 Join 删除,则需要指定要从哪个表中删除。所以,像:

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

于 2012-12-19T01:59:38.867 回答
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 语句来检索您想要的所有行。

于 2012-12-19T02:01:13.837 回答
0

基本语法是 delete from where 条件

from table_name 是您可以根据您的要求创建任何子查询的地方。

于 2013-05-27T11:50:05.040 回答
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_FirstnameEmployee_LastName 列中删除值(设置为空)。Sales

于 2012-12-19T02:06:15.400 回答