我正在尝试从table1中删除所有在table2中有匹配PK的行。虽然我的WHERE子句使用了一个键,但我得到了错误1175。我熟悉切换安全模式,但这应该不是问题,因为我的WHERE子句确实包含两个表的私钥。任何要解决的建议都将不胜感激。下面是更多详细信息。
table1结构:
CREATE TABLE `table1` (
  `pkfield` varchar(10) NOT NULL,
  `field1` varchar(3) DEFAULT NULL,
  `field2` varchar(1) DEFAULT NULL,
  `field3` varchar(1) DEFAULT NULL,
  PRIMARY KEY (`pkfield`),
  UNIQUE KEY `pkfield_UNIQUE` (`pkfield`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;table2结构:
CREATE TABLE `table2` (
  `pkfield` varchar(10) NOT NULL,
  PRIMARY KEY (`pkfield`),
  UNIQUE KEY `pkfield_UNIQUE` (`pkfield`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;删除查询:
DELETE table1.*, table2.* FROM table1 INNER JOIN table2
WHERE table1.pkfield=table2.pkfield;操作输出响应:
Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Queries and reconnect.谢谢。
发布于 2016-03-18 06:43:58
我认为EXISTS子句可以实现您所描述的功能:
DELETE
FROM table1 t1
WHERE EXISTS 
     (SELECT 'x'
        FROM table2 t2
        where t2.pkfield = t1.pkfield)https://stackoverflow.com/questions/36072316
复制相似问题