Самый простой способ может быть следующим:
SELECT
CONCAT('DELETE FROM ',TABLE_NAME," WHERE column1 = 'abc';") comd
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'YOUR_DATABASE_NAME'
AND COLUMN_NAME ='column1';
Этот запрос даст вам выход, как показано ниже:
DELETE FROM TABLE_1 WHERE column1 = 'abc';
DELETE FROM TABLE_2 WHERE column1 = 'abc';
DELETE FROM TABLE_3 WHERE column1 = 'abc';
DELETE FROM TABLE_4 WHERE column1 = 'abc';
.
.
.
Теперь скопируйте эти команды DELETE
и выполните все .
Примечание: иначе вы можете записать сохраненную программу, в которой вы можете включить эти generated command strings
в исполняемую команду / запрос через prepare statement
.
Но вы может предпочесть самый простой способ, который я предложил выше, чтобы обойти сложность.
Измените свое "внутреннее объединение" на "левое внешнее объединение", что означает, "получают меня все строки слева от соединения, даже если нет строки соответствия справа".
select page.name, count(page-attachment.id) as attachmentsnumber
from page
left outer join page-attachment on page.id=page-id
group by page.name
Вот другие подзапросы использования решения.
SELECT
p.name,
(
SELECT COUNT(*) FROM [page-attachment] pa
WHERE pa.[PAGE-ID] = p.id
) as attachmentsnumber
FROM page p
ОСТАВЛЕННОЕ соединение является Вашим другом. Для получения дополнительной информации о различных типах соединения относятся к http://en.wikipedia.org/wiki/Join_ (SQL)
Вы хотите левое соединение вместо внутреннего объединения, поскольку это позволяет записям не существовать.