Как выполнить удаление в таблице mysql, используя avg () другой таблицы? - PullRequest
2 голосов
/ 28 апреля 2020
table_a
user_id  score
1        0.33
2        0.34
3        0.35
11       0.90
88       0.80
7        0.10
8        0.11
10       0.09
12       0.80
17       0.80
18       0.80
19       0.80
20       0.80

table_b
user_id  canon_id 
1        1000     
2        1000     
3        1000      
11       4344      
88       4344      
7        2023      
8        2023      
10       2023      
12       3333      
17       3333      
18       3333      
19       3333      
20       3333     

В вышеприведенном случае, как я могу удалить записи из table_b, где связанные table_a.user_ids из table_b.canon_id имеют avg (оценка) <0.50. В этом случае canon_id 2023 и связанные с ним user_ids 7,8,10 avg (оценка) составляет 0,10, поэтому его следует удалить. </p>

1 Ответ

2 голосов
/ 28 апреля 2020

Присоедините table_b к запросу, который возвращает все canon_ids, связанные с Среднее <0,5 </em>:

delete b 
from table_b b inner join (
  select b.canon_id
  from table_b b inner join table_a a
  on a.user_id = b.user_id
  group by b.canon_id
  having avg(a.score) < 0.5
) t on t.canon_id = b.canon_id;

См. Демоверсию . Результаты:

| user_id | canon_id |
| ------- | -------- |
| 11      | 4344     |
| 88      | 4344     |
| 12      | 3333     |
| 17      | 3333     |
| 18      | 3333     |
| 19      | 3333     |
| 20      | 3333     |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...