SQL Выбор строк Repetead в таблице - PullRequest
0 голосов
/ 08 февраля 2020

В настоящее время я обновляю свои знания SQL.

У меня есть таблица - Сессии. Он хранит информацию о деятельности журнала пользователя. ie продолжительность того, как долго они вошли в систему. См. Таблицу ниже.

enter image description here

Поэтому я пытаюсь выбрать все повторяющиеся строки из таблицы (а не просто проверить, существуют ли повторяющиеся строки). До сих пор мне удалось получить вывод всей таблицы, однако мне нужны только столбцы userId и duration. Как я могу go выбрать только эти две строки?

Я думал, что это был бы SELECT a.userId вместо. * Et c, однако я получаю ошибку "неоднозначное имя столбца: userId". Не уверен что происходит. Извините, если это глупый вопрос, но любая помощь приветствуется. Спасибо.

  SELECT a.*                      
  FROM sessions a
  JOIN ( SELECT userId,duration
          FROM sessions 
          GROUP BY userId
          HAVING COUNT(userId) > 1 ) b
    ON a.userId = b.userId
    ORDER BY userId; 

enter image description here

1 Ответ

1 голос
/ 08 февраля 2020

Проблема связана с предложением ORDER BY, которое не охватывает ссылку userId на одну из таблиц. Используйте эту версию:

ORDER BY a.userId;

Вот ваш обновленный запрос, в котором предложение select подзапроса также исправлено путем удаления неправильной (и ненужной) ссылки на duration:

SELECT a.*                      
FROM sessions a
INNER JOIN
(
    SELECT userId
    FROM sessions 
    GROUP BY userId
    HAVING COUNT(userId) > 1
) b
    ON a.userId = b.userId
ORDER BY
    a.userId; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...