我有以下mysql查询,它从我的数据库中的一个口袋妖怪表中找到最近修改过的唯一spawnpoint_id:
Typescript 2.1.4
我通过以上方式获得了我想要的结果....但现在,我想要删除不匹配这些结果的所有记录。
我试图将查询括在#!/usr/bin/env bash
flag=false
saysomething() {
flag=true
trap reset 37
echo "Hello there"
while [[ $flag == true ]]; do
sleep 1
done
saysomething
}
reset() {
flag=false
}
echo "Current pid: $$"
saysomething
这样的内容中:
SELECT
t1.spawnpoint_id, t1.last_modified
FROM
pokemon t1
INNER JOIN
(SELECT
MAX(last_modified) last_modified, spawnpoint_id
FROM
pokemon
GROUP BY spawnpoint_id) t2 ON
t1.spawnpoint_id = t2.spawnpoint_id
AND t1.last_modified = t2.last_modified;
但我收到了MySQL语法错误。我一直在寻找几个小时,最后希望这里的某个人能够帮助我发现我做错了什么。非常感谢。
编辑:SHOW CREATE TABLE口袋妖怪;
DELETE .. NOT IN
答案 0 :(得分:1)
我认为问题在于您在子查询的部分(不允许)中使用要从中删除行的表pokemon
。
可以通过首先执行标记要删除的行的update-statement然后执行单独的delete语句来解决此问题。请注意,"不得在from-part中使用" -restriction也适用于update-statements。然而,这可以通过使用连接而不是子选择来解决,如下所示:
create table a (
x int,
y int
);
insert into a (x,y) values (1,2),(3,4);
update a a1, (select max(a2.x) as x from a a2) a3 set a1.y = 0 where a1.x = a3.x;
delete from a where y=0