我想做这样的事情:
DELETE FROM table WHERE id IN (SELECT ....)
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我的innodb表具有以下结构:4列(CountryID, Year, %Change, Source),以2列(CountryID, Year)为主键.除了使用for-loop删除每一行之外,如何删除多行?
我正在寻找类似的东西
DELETE FROM CPI
WHERE CountryID AND Year IN (('AD', 2010), ('AF', 2009), ('AG', 1992))
Run Code Online (Sandbox Code Playgroud) 在Hibernate中删除表中所有行的最佳方法是什么?
如果我迭代一个集合并称session.delete()它不符合我的知识.
如果我使用其他选项session.createQuery("delete ..."),则不会影响持久性上下文.
如果没有更好的变体,我应该使用这些方法吗?
我正在尝试根据另一个数据库的选择标准从一个数据库中删除记录.我们有两个表,emailNotification,用于存储作业和电子邮件列表.然后我们有工作.我想清除已关闭的作业的电子邮件通知.我在Stackoverflow上发现了一些早期的例子,它们引导我使用这种语法(我之前尝试在where之前进行连接).
DELETE FROM emailNotification
WHERE notificationId IN (
SELECT notificationId FROM emailNotification e
LEFT JOIN jobs j ON j.jobId = e.jobId
WHERE j.active = 1
)
Run Code Online (Sandbox Code Playgroud)
我收到错误,您无法在FROM子句中指定目标表'emailNotication'以进行更新.
我有一个表,应该保留给定配置文件的访问者的痕迹(用户ID到用户ID对).事实证明我的SQL查询有点过时,并且正在生成多个对而不是单个对.事后我应该对每个id + id对强制执行一个唯一约束.
现在,我怎么去打扫桌子呢?我想要做的是删除所有重复的对,只留一个.
所以例如改变这个:
23515 -> 52525 date_visited
23515 -> 52525 date_visited
23515 -> 52525 date_visited
12345 -> 54321 date_visited
12345 -> 54321 date_visited
12345 -> 54321 date_visited
12345 -> 54321 date_visited
23515 -> 52525 date_visited
...
Run Code Online (Sandbox Code Playgroud)
进入:
23515 -> 52525 date_visited
12345 -> 54321 date_visited
Run Code Online (Sandbox Code Playgroud)
更新:这是所请求的表结构:
id int(10) UNSIGNED Non Aucun AUTO_INCREMENT
profile_id int(10) UNSIGNED Non 0
visitor_id int(10) UNSIGNED Non 0
date_visited timestamp Non CURRENT_TIMESTAMP
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法来返回PostgreSQL中受DELETE子句影响的行数.该文件指出,
成功完成后,DELETE命令将返回表单的命令标记
删除计数
计数是删除的行数.如果count为0,则没有符合条件的行(这不被视为错误).
如果DELETE命令包含RETURNING子句,则结果将类似于SELECT语句的结果,该SELECT语句包含RETURNING列表中定义的列和值,这些列和值是通过命令删除的行计算的.
但我很难找到一个很好的例子.任何人都可以帮我这个,我怎么能找出删除了多少行?
编辑: 我接受了Milen的解决方案,但我想提出一个我后来发现的替代方案.它可以在这里找到,在38.5.5下解释.获取结果状态标题.
假设我们有30个列和500,000行的表Sales.我想删除表中的400,000(那些"toDelete='1'").
但我有一些限制:
TRUNCATE)但是在做一个"DELETE ... WHERE..."(我需要设置条件)时,却没有找到任何方法来做这个...任何建议都欢迎改变一个
DELETE FROM Sales WHERE toDelete='1'
Run Code Online (Sandbox Code Playgroud)
更多分区和可能的事务日志免费.
什么delete from table where NULL = NULL意思?
我试图DELETE在MS Access中使用该子句,并在使用该JOIN子句时遇到问题.我注意到这可以通过使用DISTINCTROW关键字来完成.
例如,以下SQL语句不允许删除:
DELETE Table1.*
FROM Table1 INNER JOIN Table2 ON Table1.Name=Table2.Name;
Run Code Online (Sandbox Code Playgroud)
但是,这句话的确如下:
DELETE DISTINCTROW Table1.*
FROM Table1 INNER JOIN Table2 ON Table1.Name=Table2.Name;
Run Code Online (Sandbox Code Playgroud)
DELETE使用DISTINCTROW关键词时为什么要工作?我正在编写一个脚本,它将从多个表中删除记录,但在删除之前,它必须返回一个计数,供用户在提交之前进行确认.
这是脚本的摘要.
BEGIN TRANSACTION SCHEDULEDELETE
BEGIN TRY
DELETE -- delete commands full SQL cut out
DELETE -- delete commands full SQL cut out
DELETE -- delete commands full SQL cut out
PRINT 'X rows deleted. Please commit or rollback.' --calculation cut out.
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_LINE() AS ErrorLine,
ERROR_MESSAGE() AS ErrorMessage
ROLLBACK TRANSACTION SCHEDULEDELETE
PRINT 'Error detected, all changes reversed.'
END CATCH
--COMMIT TRANSACTION SCHEDULEDELETE --Run …Run Code Online (Sandbox Code Playgroud) sql-delete ×10
sql ×5
mysql ×3
delete-row ×2
t-sql ×2
hibernate ×1
java ×1
left-join ×1
ms-access ×1
null ×1
postgresql ×1
rowcount ×1
sql-server ×1
transactions ×1
truncate ×1