SQL-запрос, рассчитайте с 0 количествами

Самый простой способ может быть следующим:

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.

Но вы может предпочесть самый простой способ, который я предложил выше, чтобы обойти сложность.

12
задан CRABOLO 21 March 2015 в 19:02
поделиться

4 ответа

Измените свое "внутреннее объединение" на "левое внешнее объединение", что означает, "получают меня все строки слева от соединения, даже если нет строки соответствия справа".

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
28
ответ дан 2 December 2019 в 03:39
поделиться

Вот другие подзапросы использования решения.

SELECT
  p.name,
  (
    SELECT COUNT(*) FROM [page-attachment] pa
    WHERE pa.[PAGE-ID] = p.id
  ) as attachmentsnumber
FROM page p
8
ответ дан 2 December 2019 в 03:39
поделиться

ОСТАВЛЕННОЕ соединение является Вашим другом. Для получения дополнительной информации о различных типах соединения относятся к http://en.wikipedia.org/wiki/Join_ (SQL)

1
ответ дан 2 December 2019 в 03:39
поделиться

Вы хотите левое соединение вместо внутреннего объединения, поскольку это позволяет записям не существовать.

1
ответ дан 2 December 2019 в 03:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: