Ответ 1
Вы можете использовать это:
SELECT
(SELECT name FROM participants WHERE id=p.participantid) AS name
FROM
programparticipants AS p
WHERE
.... (the part where you find count(name)>1)
У меня есть таблица programparticipants
. В настоящее время я успешно запрашиваю идентификаторы, где count(name) > 1
. Теперь мне нужно запросить имена, принадлежащие тем идентификаторам, где count(name) > 1
.
Пример, возвращаемый результат:
ID count(name)
1 2
3 4
4 3
Пример: необходим результат:
ID name
1 nm1
1 nm3
3 nm2
3 nm3
3 nm4
3 nm7
4 nm5
4 nm8
4 nm9
Вы можете использовать это:
SELECT
(SELECT name FROM participants WHERE id=p.participantid) AS name
FROM
programparticipants AS p
WHERE
.... (the part where you find count(name)>1)
select count(id), name
from programparticipants
group by name
having count(id) > 1
Я думаю, GROUP BY и HAVING - это то, что вы хотите.
select id, Name
from programparticipants
where id in ( <your current query selecting only id here> )
Подумайте, вы хотите посмотреть на группу, имея:
select id, name, count(name) from table group by 2,1 having count(name) = 2;
Вы можете подставить = 2 для > 1 в зависимости от того, что вы хотите (название говорит = 2, вопрос говорит > 1)
SELECT id, Name
FROM programparticipants
GROUP BY id, Name
HAVING COUNT(*) > 1