sql - 抑制Sqlite数据库上的重复项

标签 sql sqlite duplicates

我试图禁止使用此请求从表中重复:

DELETE FROM tb_entry t1
WHERE entry_id < ANY (SELECT entry_id
FROM tb_entry t2
WHERE t1.entry_id <> t2.entry_id
AND t1.entry_sdate = t2.entry_sdate
AND t1.entry_edate = t2.entry_edate
AND t1.entry_nid = t2.entry_nid
AND t1.entry_msg_grp = t2.entry_msg_grp)


我遇到的第一个错误是:

near "t1": syntax error: DELETE FROM tb_entry t1


我应该怎么做才能使其正常工作?

最佳答案

我不认为SQLite允许delete中使用别名。尝试:

DELETE FROM tb_entry
WHERE entry_id > (SELECT MIN(t2.entry_id)
                  FROM tb_entry t2
                  WHERE tb_entry.entry_sdate = t2.entry_sdate AND
                        tb_entry.entry_edate = t2.entry_edate AND
                        tb_entry.entry_nid = t2.entry_nid AND
                        tb_entry.entry_msg_grp = t2.entry_msg_grp
                );


我重写了逻辑,以引用最小的id。我认为这比< ANY容易得多,在子查询中,它选择所有其他ID。

关于sql - 抑制Sqlite数据库上的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48907930/

相关文章:

sql - 当我添加一个 LEFT OUTER JOIN 时,查询只返回几行

android - 为什么 ContentValues 有一个支持 Boolean 的 put 方法?

javascript - 如何在DotNetNuke(DNN)中只加载一次fancybox(JS已经包含在主题和模块中)

特定场景的 SQL 查询

sql - 在 MySQL 中删除一行

python - 按当前时间查询(postgres、psycopg2、python)

python - 为什么这个 sqlite3 insert 语句不添加行?

android - 如何将现有的sqlite数据库添加到Flutter并作为卡片列表打印?

javascript - 具有重名的 JS 关联对象

MySql 请求在 LEFT JOIN 上返回重复项