2014-11-21 4 views
0

Когда я пытаюсь выполнить этот запрос, он дает мне неправильный файл, хотя я получаю другую информацию правильно. Я не могу понять, в чем проблема с моим запросом? Ниже мой запрос:Почему мой запрос дает неправильный файл в mySql?

select fileid,filename,folderpath,max(version),filetype from fileinfo 
group by concat(folderpath,filename); 

Этот запрос дает результат ниже:

enter image description here

Но когда я проверить версию этого конкретного файла, то его другая ниже мое изображение:

enter image description here

Так что инсталлированный файл 210 должен дать мне 1642.

+0

Вы никогда не давали указание MySQL предоставить вам запись, содержащую 'MAX (version)'. Вы просто попросили 'MAX (version)' и все. –

+0

http://dev.mysql.com/doc/refman/4.1/ru/group-by-hidden-columns.html – piotrm

+0

Ваш выбор по одной вещи и группировка по другой вещи. Это ожидаемое поведение. – Strawberry

ответ

1

Использование функции агрегата, а затем group by не гарантирует, что выбор выполняется из столбца агрегата, когда у вас мало столбцов. Также в вашем случае уже указано, что вы выбираете что-то и группируете что-то еще.

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

select 
f1.* 
from fileinfo f1 
left join fileinfo f2 on concat(f1.folderpath,f1.filename) = concat(f2.folderpath,f2.filename) 
and f1.version < f2.version 
where f2.fileid is null; 

demo

0

потому что MAX не означает, что вы получаете всю строку максимального значения. Макс только получает максимальное значение столбца, и он не указывает, в какой строке это значение. вместо того, чтобы использовать максимальный порядок использования для сортировки вашей версии по desc.

-1

Вы должны сгруппировать по всем полям:

select fileid,filename,folderpath,max(version),filetype from fileinfo 

группы по FILEID, CONCAT (путь_к_папке, имя файла), типов файлов;

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