我在MYSQL中删除了两个表中的选定行,这两个表都有外键.
DELETE d,b
FROM A as b
INNER JOIN B as d on b.bid=d.bid WHERE b.name LIKE '%xxxx%';
Run Code Online (Sandbox Code Playgroud)
MYSQL抱怨外键,即使我试图从两个表中删除:
Error: Cannot delete or update a parent row: a foreign key constraint
fails (`yyy/d`, CONSTRAINT `fk_d_bid` FOREIGN KEY (`bid`) REFERENCES
`b` (`bid`) ON DELETE NO ACTION ON UPDATE NO ACTION)
Run Code Online (Sandbox Code Playgroud)
从这两个表中删除的最佳解决方案是什么?
我有两张桌子:
listings(item_id, ...)
images(item_id, ...)
Run Code Online (Sandbox Code Playgroud)
两个表中的item_id值相同 - 但是我从'listing'表中删除并删除了列表,而没有删除'images'表中的相应行.
所以 - 我想删除第二个'images'表中的所有行,如果IMAGES中的item_id与我的主'listing'表中的任何更新的item_id值不对应.
如何删除'images'表中未从'listing'引用的所有记录?
我一直在试验SQL脚本和子查询,如下所示:
DELETE FROM images WHERE item_id IN
(SELECT item_id FROM images EXCEPT SELECT item_id FROM listings)
Run Code Online (Sandbox Code Playgroud)
但在我搞砸之前,想确认这是否正确?
我是android新手.任何人都可以帮助我在android中的sqlite中截断表..任何人都可以给我删除表的例子吗?请帮我.
这是我试图运行的代码:
DELETE DISTINCTROW JHALL_REFERAL_ASSIGNMENTS.emp_id, JHALL_REFERAL_ASSIGNMENTS.ref_elem_id
FROM JHALL_REFERAL_ASSIGNMENTS
WHERE (((JHALL_REFERAL_ASSIGNMENTS.emp_id)=(select b.emp_id from JHALL_REFERAL_ELEMENT a, JHALL_REFERAL_ASSIGNMENTS b, BSI_MARTS_D_EMPLOYEE c
where C.FULL_NM = 'Employee'
and A.REF_NAME ='Max Premium of 5,000'
and A.REF_ELEM_ID = B.REF_ELEM_ID
and B.emp_id = C.EMPLOYEE_KEY
)) AND ((JHALL_REFERAL_ASSIGNMENTS.ref_elem_id)=(select a.ref_elem_id from JHALL_REFERAL_ELEMENT a, JHALL_REFERAL_ASSIGNMENTS b, BSI_MARTS_D_EMPLOYEE c
where C.FULL_NM = 'Employee'
and A.REF_NAME ='Max Premium of 5,000'
and A.REF_ELEM_ID = B.REF_ELEM_ID
and B.emp_id = C.EMPLOYEE_KEY
)));
Run Code Online (Sandbox Code Playgroud)
每次我尝试在Access中运行它时,我都会收到错误3086,"无法从指定的表中删除".当试图在线查找信息时,我一直在遇到决议,说我应该将"唯一记录"字段更改为"是",但我没有解决我的问题.我在Toad中运行相同的代码(用.而不是分隔模式和表名_),它运行良好.
我有两张桌子:
id | 名字| 邮件| 通过| 盐
id | uid | 标题| 文字| 时间戳
现在我要删除所有entries带有a的行uid,这在user-table中是不存在的(已删除的用户)
我认为这可能是这样的:
DELETE entries FROM user, entries WHERE [What comes here? I don't know :(]
Run Code Online (Sandbox Code Playgroud) 假设我有一个包含列的表格:
CustomerNumber
Lastname
Firstname
PurchaseDate
Run Code Online (Sandbox Code Playgroud)
......以及其他不改变问题内容的列,如果它们没有在这里显示的话.
在这个表中,我可以为同一个客户提供许多行,具有不同的购买日期(我知道,设计不佳......我只是试图解决报告问题,而不是真正尝试解决问题的根源).
在SQL中,如何为每个客户保留一条记录,并删除其余的日期?A group by似乎不适合我的情况
我已经读过Sql中DELETE和TRUNCATE TABLE之间的区别之一是无法回滚 TRUNCATE操作并且不会触发任何触发器(例如,在此站点中编写):
问题:这是否意味着当我TRUNcATE TABLE包含数百万条记录时,我不应该影响事务日志文件 - 事务日志文件在截断时不应该长大 - 我是否正确?
SQL服务器:
区别:
Delete tblxyz where id=6
Run Code Online (Sandbox Code Playgroud)
并且:
Delete from tblxyz where id=6
Run Code Online (Sandbox Code Playgroud)
他们在上述查询之间有什么区别吗?
我们有一个超过62k行的表.我们正在运行一个非常简单的删除查询,需要45分钟才能完成:
DELETE FROM myTable WHERE createdtime < '2017-03-07 05:00:00.000'
Run Code Online (Sandbox Code Playgroud)
我们尝试过的事情:
1-在timestamp列上添加了一个索引,但没有帮助.
2-使用函数分批删除20或50行,这仍然非常慢.
3-删除引用此表及其自己的主键约束的所有外键约束,这有助于将时间减少到几秒但我们无法在生产数据库上安全地执行此操作,因为它将锁定表并防止读取并在事务运行时写入.
我拒绝相信这个查询通常需要很长时间才能完成.任何建议表示赞赏.
拥有一款Android房三个用表timestamp,index,details,以及三者有
@PrimaryKey @ColumnInfo(name = "id") var id: Int = 0
Run Code Online (Sandbox Code Playgroud)
必须fun clearDataByID(idList: List<Int>) 通过清除所有三个表id中的数据idList
道为:
@Dao
interface DataDAO {
@Transaction
fun clearDataByID(idList: List<Int>) {
deleteDataInTimestamp(idList)
deleteDataIndex(idList)
deleteDataDetails(idList)
}
@Query("delete from timestamp where id in :idList")
fun deleteDataInTimestamp(idList: List<Int>)
@Query("delete from index where id in :idList")
fun deleteDataIndex(idList: List<Int>)
@Query("delete from details where id in :idList")
fun deleteDataDetails(idList: List<Int>)
}
Run Code Online (Sandbox Code Playgroud)
但是它会得到编译器错误(这三个都相似)
error: no viable alternative at input 'delete from timestamp where …Run Code Online (Sandbox Code Playgroud) sql-delete ×10
sql ×6
mysql ×3
android ×1
android-room ×1
duplicates ×1
foreign-keys ×1
ms-access ×1
postgresql ×1
sql-server ×1
sqlite ×1
truncate ×1