2009-09-24 1 views
1

У меня есть таблицаSQL: как писать ORDER BY на основе значения внутри группы?

project issues updated 
    1 1 2009-09-03 
    1 2 2009-09-08 
    2 1 2009-09-12 
    2 2 2009-09-01 

, и я хотел бы разобраться с тем, что проекты отсортированы в порядке убывания, так что проект с последней обновленной проблемой является первым и т.д., но все выпуски проекта сохранены вместе и вопросы находятся в порядке возрастания в рамках проекта на основе номер выпуска

результат должен быть:

project issues updated 
    2 1 2009-09-12 
    2 2 2009-09-01 
    1 1 2009-09-03 
    1 2 2009-09-08 
+0

Добавить 4 пробела перед каждой строкой вашего стола – Fragsworth

+0

Сделал это для него. –

+0

BTW, я считаю, что в последней строке первой таблицы есть опечатка, а 'issues' должно быть 2, но я не уверен, поэтому не исправил это в моем редактировании. –

ответ

3

Я не думаю, что это будет работать (извините, не MySQL под рукой, так что я просто проверял на SQLite ...):

select t.project, t.issues, t.updated from t 
join (select project, max(updated) as dat 
     from t group by project) as t1 
    on (t.project = t1.project) 
order by t1.dat desc, t.issues asc 
5

что-то, как это должно сделать работу:

SELECT mt.* 
FROM mytable mt 
JOIN (SELECT MAX(updated) AS LastUpdated, project 
       FROM mytable GROUP BY project) lu ON lu.project = mt.project 
ORDER BY lu.LastUpdated DESC, mt.Issues 

К сожалению, я просто видел тег MySQL. Я не знаю, если это решение будет работать в MySQL

1

SELECT p.project, p.issues, p.updated, max(r.updated) 
FROM table p INNER JOIN table r ON r.project=p.project 
GROUP BY p.project, p.issues, p.updated 
ORDER BY 4 DESC, p.project, p.issues 

Я пробовал эквивалентный запрос в mysql &, похоже, он работает так, как вы этого хотите.

+0

Спасибо, что работает. Несмотря на то, что проблемы теперь в обратной последовательности в каждом проекте. Что бы я изменил, чтобы сохранить проблемы в числовой последовательности? – sdfor

+0

Ах! извините, ошибка в соединении. Должно быть исправлено сейчас. –

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