Массовое сравнение таблиц MySql и удаление строк

79
09 июня 2021, 00:30

В базе есть таблица "Users", в ней есть колонка user_id (числовое значение) Любой юзер может создать объявление(строку) в таблице "obj", которому будет присвоен obj_id (числовое значение), а также в таблице obj есть колонка obj_author, значение которой равно user_id.

То есть, я создаю юзера, получаю user_id = 16001
Создаю объявление c obj_id = 3200, и obj_author = 16001
Создаю еще одно объявление c obj_id = 3201, и obj_author = 16001

99% спамеров создают только профили, соответственно, если у профиля нет объявлений, его можно удалять. Нужно для каждой строки таблицы obj сделать сравнение Если user_id = author, то оставляем, если нет,то строку с данным user_id удаляем.

Это можно как то сделать?

Answer 1

Например так:

delete from users ud where ud.user_id in (Select 
  user_id 
from 
  users u
  left join objects o on o.user_id=u.user_id
where 
  IS_NULL(o.user_id))
Answer 2

Спасибо Владимиру Клыкову, он дал нужное направление, но его код написан на скорую руку, и выдает ошибку. Мне нужно удалить строки из таблицы e1xc7_users, если значение столбца id не существует в столбце obj_author любой строки в таблице e1xc7_obj Вот работающее решение.

DELETE u 
FROM e1xc7_users u  INNER JOIN 
(SELECT us.id FROM e1xc7_users us
LEFT JOIN
    e1xc7_obj o ON us.id = o.obj_author
WHERE
    o.obj_author IS NULL) u2
ON u.id = u2.id
READ ALSO
Как решить проблему с древовидной структурой?

Как решить проблему с древовидной структурой?

Всем привет мне надо сделать древовидную структуру!

114
Как сделать ссылку с сегодняшней датой?

Как сделать ссылку с сегодняшней датой?

Делаю ссылки в ввиде http://siteru/main

110
Проблема с chat_invite_user_by_link (объект messages)

Проблема с chat_invite_user_by_link (объект messages)

Я решил обратиться к вам за помощью, ибо сам не понимаю как с этим боротьсяУ меня есть паблик-бот, который состоит в беседе, имеет полный доступ...

226