У меня есть таблица, скажем, с идентификатором и счетом. Я хотел бы иметь для каждого ID максимальный балл. Но может случиться так, что у меня одинаковая оценка для одного ID, и в этом случае я хочу иметь оба значения. Так скажем, у меня есть таблицавыберите максимальное значение для каждого ID (включая возможность множественных максимальных значений для одного ID!)
ID score
1 10
1 10
2 8
2 6
Я хотел бы иметь в результате
ID score
1 10
1 10
2 8
Было бы сочетание
SELECT ID, max(score) FROM tbl GROUP BY ID, score ORDER BY ID
и
select * from tbl where score = (select max (score) from tbl)
Я пробовал
select * from tbl where score = (select max (score) from tbl GROUP BY ID)
Но, конечно, это говорит о том, что у меня есть несколько строк в подзапросе. И я хочу, чтобы эти несколько строк, которые я не хочу, чтобы ограничить его 1.
Я пытался
SELECT * FROM tbl AS tbl1
JOIN
(select * from tbl where score = (select max (score) from tbl))
ON tbl1.ID=tbl.ID
Но он говорит: «подзапрос в FROM должен иметь псевдоним» Я дал псевдонимы для всех подзапросов и I все еще есть эта ошибка.
'выбрать * из ТПС t, где не существует (выберите * из tbl x, где x.id = t.id и x.score> t.score); 'voila! – joop
Это прекрасно работает, спасибо вам большое! – userper