Если вы не уверены в правильности удаления, вы можете проверить его путем преобразования в эквивалентный SELECT:
SELECT b.bannedUserID
FROM ban b JOIN user u ON b.bannedUserID = u.id
WHERE u.type = 'Admin';
Идентификаторы, возвращаемые этим запросом, те, которые вы хотите УДАЛИТЬ?
Затем попробуйте выполнить транзакцию (если вы используете механизм хранения, который поддерживает транзакции, т. Е. Не MyISAM), чтобы при необходимости можно было выполнить откат:
START TRANSACTION;
DELETE b
FROM ban b JOIN user u ON b.bannedUserID = u.id
WHERE u.type = 'Admin';
/* do some SELECT to see if the correct rows have been deleted and no others */
/* but if anything appears wrong, and ban is an InnoDB table, you can... */
ROLLBACK;
Обратите внимание, что я использую многостоловой синтаксис DELETE в MySQL. Он должен работать так же, как ваш подход подзапроса, но в некоторых случаях он может быть более гибким.