Подбирать в ORDER BY? Допустимый SQL? - PullRequest
1 голос
/ 29 февраля 2012

Это допустимый SQL?Если да, не могли бы вы сказать мне, что это делает?По сути, этот SQL-запрос сортируется не по полю, а по некоторому значению в строке поля (мин).Это не кажется логичным, так что сортируйте по чему-то другому, кроме имени поля.Но мин (Somefield) <> Somefield!Но, да, этот запрос работает, и кто-то на работе, кто учит меня, сказал мне это, и я скептически отношусь.Можете ли вы сказать мне, что это значит?Или просто отправить эквивалентный запрос?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 29 февраля 2012

Этот запрос заказывает MyFirstTable с минимальным значением somefield, хранящимся в MySecondTable при том же id.

Вот краткий пример:

MyFirstTable
id
1
2
3

MySecondTable
id    somefield
1     2
1     4
2     1
3     6
3     4

В приведенном выше случае ваш запрос вернет

id
2
1
3
0 голосов
/ 02 сентября 2012

Эквивалентный запрос, который может иметь больше смысла:

SELECT MyFirstTable.ID, MyFirstTable.A, MyFirstTable.B
FROM MyFirstTable
INNER JOIN MySecondTable ON MyFirstTable.ID = MySecondTable.ID
GROUP BY MyFirstTable.ID, MyFirstTable.A, MyFirstTable.B
ORDER BY MIN(MySecondTable.SomeField)
...