【发布时间】:2017-11-30 10:36:10
【问题描述】:
我正在使用 MySql 5.7
DROP TABLE IF EXISTS `session`;
CREATE TABLE `session` (
`Id` varchar(128) NOT NULL,
`Browser` varchar(128) NOT NULL,
`IpAddress` varchar(128) NOT NULL,
`UserId` varchar(128) NOT NULL,
`CreatedAt` datetime DEFAULT NULL,
`ModifiedAt` datetime DEFAULT NULL,
`CreatedBy` varchar(256) DEFAULT NULL,
`ModifiedBy` varchar(256) DEFAULT NULL,
PRIMARY KEY (`Id`)
);
DELETE FROM session
WHERE Id IN (SELECT * FROM (SELECT Id FROM session WHERE CreatedAt > NOW()) AS temp);
我收到一个错误:错误代码:1175。您正在使用安全更新模式,并且您尝试更新没有使用 KEY 列的 WHERE 的表 要禁用安全模式,请切换 Preferences -> SQL Editor 中的选项,然后重新连接。 0.000 秒
我不认为禁用安全更新是个好主意。关闭保存模式answers here 也许还有其他解决方案。有什么想法吗?
添加虚拟条件 !='' 并删除作品
DELETE FROM session
WHERE Id !='' AND Id IN (SELECT * FROM (SELECT Id FROM session WHERE Browser = "Mozilla") AS temp);
从会话中选择 *;
像 Id IS NOT NULL 或 Id IN ("some_dummy_id_here") 这样的虚拟条件不起作用
感谢@tim-biegeleisen 的帮助!
【问题讨论】:
标签: mysql