在我的数据库中,我有两个表:projects
和comp_types
. 创建新项目时,会触发一个触发器,该触发器会在projects
表中的列中插入一个串联值。
一个完全工作的SQL Fiddle。
请运行它,你会看到,它有效。
但是,当我尝试在 SQL Server 中运行它时,我收到以下错误:
子查询返回了 1 个以上的值。当子查询跟随 =、!=、<、<=、>、>= 或当子查询用作表达式时,这是不允许的。
截图:http : //i.stack.imgur.com/38rKV.jpg
SQL Server 中的所有表都是新鲜的,没有数据(就像小提琴一样)。
我究竟做错了什么?
删除重复行时,使用本教程中的以下查询,我将如何强制删除找到的哪些重复行?
DELETE FROM dbo.ATTENDANCE
WHERE AUTOID NOT IN (SELECT MIN(AUTOID) _
FROM dbo.ATTENDANCE
GROUP BY EMPLOYEE_ID,ATTENDANCE_DATE)
Run Code Online (Sandbox Code Playgroud)
这很好用。我使用这个的原因是因为唯一可用的唯一 ID 是IDENTITY
列中的一个。为了确定是否有重复的行,我必须查看多列的组合。
但是,如果我有一组重复的行,我/SQL Server 如何决定删除哪些行?我将如何强制它删除除最高IDENTITY
值之外的所有内容?
EMPLOYEE_ID ATTENDANCE_DATE AUTOID
A001 2011-01-01 1
A001 2011-01-01 2
Run Code Online (Sandbox Code Playgroud)
如果我现在运行查询,它恰好删除了第二个,有AUTOID
2 个。但我试图删除除这个之外的所有内容(因为这是最新添加的)。