好的,所以如果你想要一个背景故事,请看看我之前的问题
弄清楚哪些记录不重复很容易:
SELECT *
FROM eventlog
GROUP BY event_date, user
HAVING COUNT(*) = 1
ORDER BY event_date, user
Run Code Online (Sandbox Code Playgroud)
这将返回我的所有非重复项.所以我想我会把它们移到另一个名为"no_duplicates"的表中,然后从原始表中删除它们.然后我可以在原始表中单独看到重复项,修复它们,然后添加no_dupes.但同时:
INSERT INTO no_duplicates
SELECT *
FROM eventlog
GROUP BY event_date, user
HAVING COUNT(*) = 1
ORDER BY event_date, user
Run Code Online (Sandbox Code Playgroud)
像魅力一样工作,以下引发错误:
DELETE
FROM eventlog
GROUP BY event_date, user
HAVING COUNT(*) = 1
ORDER BY event_date, user
Run Code Online (Sandbox Code Playgroud)
我的猜测是,当查询返回唯一的,已经在表中的记录时,通过聚合函数删除不是犹太教.这是可以理解的,除了我不知道我还能做些什么来确保只删除我移动的记录.我搜索并发现没有"在INSERT中删除原始表中的记录后"语法,我的猜测是它无论如何都会失败,因为删除失败的原因相同.
那么,有人可以帮我找到丢失的一块吗?
这是正确的方法吗?
DELETE t1, t2, t3, t4 FROM
table1 as t1
INNER JOIN table2 as t2 on t1.id = t2.id
INNER JOIN table3 as t3 on t1.id=t3.id
INNER JOIN table4 as t4 on t1.id=t4.id
WHERE t1.username='%s' AND t1.id='%s'
Run Code Online (Sandbox Code Playgroud) 我正在尝试使sql删除所有重复的标题但是必须删除具有以下条件的重复项:
到目前为止我已经完成了(用select测试...)
SELECT topic_id,object_id,title,url,date
FROM topics GROUP BY title
HAVING ( COUNT(title) > 1)
ORDER BY topic_id DESC
Run Code Online (Sandbox Code Playgroud)
但不符合条件.
我正在使用mysql.
我正在尝试清理一个有很多孤儿的桌子.
我正在接近这个,通过查找空值来检查是否与另一个表有关系.
DELETE FROM table1
LEFT JOIN table2 ON table1.ID = table2.ID
WHERE table2.ID IS NULL
Run Code Online (Sandbox Code Playgroud)
我收到左外连接无效的错误.
我正在寻找其他方法的建议,我可以从这个破碎的关系中删除这些孤儿
我正在处理一个非常大的数据库~6百万条记录.我今天添加了约30,000个不良记录.如何删除今天在MySQL中创建的所有记录?
我有2张桌子:
我想删除启动用户和target_user都设置为"user_connected = 0"的所有"房间"
我有两个问题:
如何定位这些用户?显然这个查询不起作用:
SELECT room_id
FROM rooms,users
WHERE
(
(room_target_user_id=user_id) AND (user_connected=0)
)
AND
(
(room_initiating_user_id=user_id) AND (user_connected=0)
)
Run Code Online (Sandbox Code Playgroud)我希望,如果可能,使用相同的查询删除这些房间(如果我使用第二个查询没问题,但这意味着将为每个结果触发此查询,这是很多.是不是可以删除这些房间一次?
我有一个table_Project,其中包含CustomerID(链接到tbl_Customer).在tbl_Customer中,我有Customer_ID(作为密钥)和其他一些信息,如电话,电子邮件等.
要从Gridview中删除它,我使用此DeleteCommand:
DeleteCommand="DELETE FROM [tbl_Customer] WHERE [Customer_ID] = @Customer_ID"
Run Code Online (Sandbox Code Playgroud)
但它给了我以下错误:
The DELETE statement conflicted with the REFERENCE constraint "Klant_Relatie". The conflict occurred in database "Database_1", table "dbo.tbl_Project", column 'CustomerID'.
The statement has been terminated.
但是通过更新CustomerInfo,我没有收到任何错误.我已经看到了C#的不同解决方案,但我使用.net
有任何想法吗?
I am trying to delete all voters from a voters table where they are not registered as a democrat or republican AND only voted once. I have a database with three tables, congress_members, voters, and votes and have to JOIN votes with voters in order to delete the right data.
This code finds the data I want to delete:
SELECT voters.*
FROM voters JOIN votes ON voters.id = votes.voter_id
WHERE party = 'green' OR party = 'na' OR party = …Run Code Online (Sandbox Code Playgroud) 我想用EF删除一个大的项目列表,所以我试图逐个删除它们,但这需要很长时间.
我尝试使用.RemoveAll()我的列表中的方法,但它不更新数据库[仅从已加载的实体中删除]
所以我使用a SqlCommand从数据库中删除它们,我.RemoveAll()用来防止EF unexpected number of rows update (0)异常.
码:
dbContext.Database.ExecuteSqlCommand("DELETE FROM xxx WHERE xxx");
loadedEntity.subItems.ToList().RemoveAll(r => true);
dbContext.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
我的问题:有更好的方法吗?
我有一个看起来像这样的表:
| ID | FROM_DATE | TO_DATE |
------------------------------
| 1 | 1/1/2001 | 2/1/2001|
| 1 | 2/1/2001 | 3/1/2001|
| 1 | 2/1/2001 | 6/1/2001|
| 1 | 3/1/2001 | 4/1/2001|
| 2 | 1/1/2001 | 2/1/2001|
| 2 | 1/1/2001 | 6/1/2001|
| 2 | 2/1/2001 | 3/1/2001|
| 2 | 3/1/2001 | 4/1/2001|
Run Code Online (Sandbox Code Playgroud)
它已经被排序ID,From_Date,To_date.
我想要做的是删除from_date比to_date前一行更早的行,ID等于上一行的ID.所以在这个例子中,我只会删除第3行和第6行.
我知道我需要某种循环结构才能实现这一目标,但我不知道为什么我一直在这里看两行.我怎样才能在Oracle中实现这一目标?
编辑:使用'LAG'功能更快更容易,我最终也删除了第4行和第7行 - …
sql-delete ×10
sql ×6
mysql ×5
duplicates ×2
sql-server ×2
asp.net ×1
c# ×1
date ×1
delete-row ×1
insert ×1
join ×1
loops ×1
optimization ×1
oracle ×1
select ×1
sqlite ×1
t-sql ×1