Получение дополнительной информации из подзапроса SQL - PullRequest
2 голосов
/ 08 сентября 2010

У меня есть SQL-запрос, дающий мне список двойных записей в моей базе данных.

select periodid, itemid from periodscore  
group by periodid, itemid
having count(*) > 1

Это работает, как и ожидалось, но теперь я хотел бы получить дополнительные поля этих записей (например, дату последнего обновления и т. Д.). Итак, я попробовал:

select * from periodscore where periodscoreid in
(select periodscoreid from periodscore  
group by periodid, itemid
having count(*) > 1)

Конечно, это не работает и выдает ошибку:

Столбец periodscore.PeriodScoreID равен неверно в списке выбора, потому что это не содержится ни в агрегатная функция или GROUP BY пункт.

Как я могу получить дополнительные поля в этом запросе?

Ответы [ 2 ]

2 голосов
/ 08 сентября 2010
select ps.* 
from periodscore ps
inner join (
    select periodid, itemid 
    from periodscore   
    group by periodid, itemid 
    having count(*) > 1
) psm on ps.periodid = psm.periodid and ps.itemid = psm.itemid
1 голос
/ 08 сентября 2010
  select p1.* from periodscore p1 JOIN 
  (select periodid, itemid from periodscore  
   group by periodid, itemid
   having count(*) > 1) p2
   ON (p1.periodId = p2.periodId
       AND p1.itemid = p2.itemid)

, если periodid или item имеют нулевые значения, тогда

  select p1.* from periodscore p1 JOIN 
  (select periodid, itemid from periodscore  
   group by periodid, itemid
   having count(*) > 1) p2
   ON (IFNULL(p1.periodId,0) = IFNULL(p2.periodId,0))
       AND IFNULL(p1.itemid,0) = IFNULL(p2.itemid,0))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...