MySql сложный запрос | Как удалить из SELECT и как создать подсписок из массива - PullRequest
0 голосов
/ 07 ноября 2018

Я работаю с этой таблицей: Таблица, с которой я начинаю и у меня есть следующий sql:

SELECT customer_id, 
   GROUP_CONCAT(incident_id order by create_time asc) as ids,
   count(incident_id) as total_count 
FROM incidents 
GROUP BY customer_id

этот sql генерирует следующую таблицу таблица

Я хотел бы выполнить запрос DELETE для сгенерированной таблицы. Я пытался сделать это:

DELETE FROM (
    SELECT customer_id, 
        GROUP_CONCAT(incident_id order by create_time asc) as ids,
        count(incident_id) as total_count 
    FROM incidents 
    GROUP BY customer_id)
WHERE total_count > 3 

НО я получил ошибку: ошибка

Что я делаю не так?

И второй вопрос -> Как только я узнаю, как удалить из этой таблицы, я бы хотел расширить термин удаления (который был «где total_count> 3») и добавить к нему другой термин, который удалит все строки, где идентификаторы выше 3, поэтому я буду осталось только 3 идентификатора. В postgress я сделаю это, добавив следующий термин: инцидент = любой (идентификаторы [3: итого]) То есть я хочу создать подсписок из группы. Как мне это сделать в MySql?

Чтобы загореться, я хотел бы выполнить следующий sql:

DELETE FROM (
    SELECT customer_id, 
           GROUP_CONCAT(incident_id order by create_time asc) as ids,
           count(incident_id) as total_count 
    FROM incidents 
    GROUP BY customer_id)
WHERE total_count > 3 
     AND incident_id = ANY(ids[3:total_count])

1 Ответ

0 голосов
/ 07 ноября 2018

http://sqlfiddle.com/#!9/d14a1da/2

DELETE i.* FROM incidents i
INNER JOIN (
    SELECT customer_id, 
        count(incident_id) as total_count 
    FROM incidents 
    GROUP BY customer_id
    HAVING total_count >3) f
ON i.customer_id = f.customer_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...