sql查询删除

时间:2012-12-19 01:52:43

标签: 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中):消息102,级别15,状态1,行1 ','。

附近的语法不正确

6 个答案:

答案 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_LastNameSales列的值(设置为空)。

答案 5 :(得分:0)

基本语法是 从中删除 条件

来自table_name的

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