我收到 “错误”#1093 - 您无法使用此代码在FROM子句“ 中为更新指定目标表't1':
UPDATE `table1` t1 SET t1.name = 'abc'
WHERE t1.id = 165 AND NOT EXISTS (
SELECT t2.id FROM `table1` t2 WHERE t2.id != 165 AND t2.name = 'abc'
)
但代码没有问题:
UPDATE `table1` t1 SET t1.name = 'abc'
WHERE t1.id = 165 AND NOT EXISTS (
SELECT t2.id FROM `table2` t2 WHERE t2.id != 165 AND t2.name = 'abc'
)
我出了什么问题?
答案 0 :(得分:1)
您可以将此查询重新定义为同一个表的自联接:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
此处的更新逻辑是您的UPDATE table1 t1
LEFT JOIN table1 t2
ON t2.id != 165 AND t2.name = 'abc'
SET t1.name = 'abc'
WHERE t1.id = 165 AND t2.name IS NULL
子句已替换为NOT EXISTS
,其中来自联接左侧的任何记录不匹配({{1} }})LEFT JOIN
不是165且名称为t2.name IS NULL
的任何记录。
答案 1 :(得分:0)
UPDATE `table1` t1 SET t1.name = 'abc'
WHERE t1.id = 165 AND t1.name != 'abc'
您可以在不使用内部查询的情况下实现相同目的。
试试上面的代码。
希望这会有所帮助。