2016-09-25 3 views
1

У меня есть таблица с измерениями звезд. Каждая строка (т. Е. Измерение) содержит идентификатор звезды и ее период.MySQL Query с условием, которое основано на нескольких строках

Допустит, например:

Star_ID Period 
1   4.1 
1   3.6 
2   4.1 
2   4.1 
2   8.7 
3   2.5 
4   1.3 
4   1.3 

Я хочу написать запрос, возвращающий Star_ID-й только из звезд, которые имеют более одного измерения с тем же периодом. В нашем примере он должен вернуть {2,4}.

Может ли кто-нибудь помочь мне с этим?

ответ

0

Вот еще один вариант, который просто делает GROUP BY только на колонке Star_ID:

SELECT Star_ID 
FROM yourTable 
GROUP BY Star_ID 
HAVING COUNT(*) - COUNT(DISTINCT Period) >= 1 

Перейдите по ссылке ниже для работающей демо:

SQLFiddle

2

Вы можете использовать группу по и имеющим

select Start_ID 
from my_table 
group by star_ID, Period 
having count(*) > 1 

Вы можете получить желаемое значение группировки строк по start_id и Period и за это получать подсчет количества строк .. , то вы можете фильтровать результат, используя имея и проверки FO подсчета (*)> 1 ..

+0

Пожалуйста, объясните вкратце так, что ПО может узнать что-то новое. – 1000111

+0

А если условие на период сложнее? то есть вместо равных периодов - периодов, которые удовлетворяют P1 - P2 Tomer

+0

У меня есть обновление asnwer .. – scaisEdge

Смежные вопросы