SQLITE-删除具有自联接的行?
我正在尝试删除一个简单表中除id最高的重复行外具有重复值的所有行 表:SQLITE-删除具有自联接的行?,sqlite,syntax,Sqlite,Syntax,我正在尝试删除一个简单表中除id最高的重复行外具有重复值的所有行 表: CREATE TABLE IF NOT EXISTS [Expression] ( [ID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, [Value] VARCHAR(2048) NOT NULL ) 尝试的查询: DELETE Expressio
CREATE TABLE IF NOT EXISTS [Expression] (
[ID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[Value] VARCHAR(2048) NOT NULL
)
尝试的查询:
DELETE Expression
WHERE EXISTS (
SELECT 1
FROM Expression Exp2
WHERE Expression.Value=Exp2.Value
AND Expression.Id < Exp2.Id)
失败于
SQL逻辑错误或表达式附近缺少数据库:语法错误
失败于
SQL逻辑错误或Exp1附近缺少数据库:语法错误
我需要使用什么语法?不要忘记FROM
别忘了这封信
您可以通过多种方式实现这一点: 1使用CTE:
2使用临时表:相同的概念您可以通过多种方式实现: 1使用CTE:
2使用临时表:相同的概念从联系人t1中删除t1内部连接联系人t2,其中t1.id
DELETE Exp1
FROM Expression Exp1
INNER JOIN Expression Exp2
ON Exp1.Value=Exp2.Value AND Exp1.Id < Exp2.Id
DELETE FROM Expression
WHERE EXISTS (
SELECT 1
FROM Expression Exp2
WHERE Expression.Value=Exp2.Value
AND Expression.Id < Exp2.Id
);
WITH CTE AS (
SELECT ID, VALUE, ROW_NUMBER() OVER(ORDER BY Value) as RowNum
FROM Expression
)
DELETE
FROM CTE
WHERE ROWNum >1