Skip to content

howto - mysql delete from table as t

You try something like

DELETE FROM `my_table` AS `t` WHERE ...
and you get back an error. The problem is, that you are using an alias for your table and mysql can not figure out where to delete from. The solution/fix is simple
DELETE `t` FROM `my_table` AS `t` WHERE ...
. I found the answere here

mysql delete with subquery using a limit

So, you are want to delete entries by using a subquery and the limit and all you get back is something like the following:

This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
The solution is a little bit tricky and costs a bit performance but it is working, try the following:
DELETE FROM `my_table` WHERE `my_table`.`id` IN ( SELECT * FROM ( SELECT `my_other_table`.`id` FROM `my_other_table` WHERE `my_other_table`.`condition` = 'My condition' LIMIT 0, 100 ) as deleteTable);