Как выбрать больше строк из подзапроса

76
10

Когда я пытаюсь запустить этот запрос:

 select * FROM 'activity' 
WHERE user_id = 1
AND activity_id NOT LIKE (select activity_id from activity where user_id = 1 ORDER BY activity_id DESC LIMIT 8)

Я получаю следующую ошибку:

 Subquery returns more than 1 row

Как я могу решить эту проблему? Я хочу выбрать activity_id из таблицы, исключая последние 8 activity_id для определенного пользователя.

спросил(а) 2021-01-19T14:11:31+03:00 2 месяца, 3 недели назад
1
Решение
86

NOT LIKE ожидает выражения или значения для сравнения, а не набора результатов. Изменение НЕ НРАВИТСЯ ДЛЯ НЕ ВХОДИТ

Попробуй это:

    SELECT * FROM 'activity' 
WHERE user_id = 1 AND activity_id NOT IN (
SELECT activity_id FROM activity WHERE user_id = 1
ORDER BY activity_id DESC LIMIT 8)

ответил(а) 2021-01-19T14:11:31+03:00 2 месяца, 3 недели назад
44

Решив это, сделайте следующее:

                $sql2 = "DELETE t1.*
FROM activity t1
left join (select activity_id from activity where user_id = '".$row['user_id']."' ORDER BY activity_id DESC LIMIT 8) t2
on (t1.activity_id = t2.activity_id)
where t2.activity_id is null
and t1.user_id = '".$row['user_id']."'";

ответил(а) 2021-01-19T14:11:31+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема