2015-05-28 4 views
1

У меня есть две таблицы ss_test и ss_ceastore_config ss_test имеет поле с именем store_id, которое сопоставляется с идентификатором ss_ceastore_config. my ss_test содержит запись сервера, в которой говорится, что в хранилище используется , поэтому я пытаюсь найти, какое хранилище используется мин. Раз и его идентификатор. У меня ниже написан запрос.Получение неожиданного результата при использовании min (key)

select id, 
     min(server_counts) as server_counts, 
     isalive 
from (select ss_ceastore_config.id , 
       count(server_id)as server_counts, 
       ss_ceastore_config.isalive 
     from ss_test 
     right join ss_ceastore_config 
     on ss_test.store_id = ss_ceastore_config.id 
     group by store_id 
     order by id) join_1 

мой внутренний запрос дает мне надлежащий результат, как показано ниже

id Ascending server_counts isalive 
1     5    1 
2     0    1 

, поэтому я хочу, чтобы выбрать ниже записи из внутреннего вывода запроса с использованием мин функции

id Ascending server_counts isalive 
2     0    1 

, но это дает неожиданный результат с мой внешний запрос ниже

id server_counts isalive 
1   0   1 

почему это так? почему он дает id 1 для server_counts 0? как исправить этот запрос?

ответ

2
select id, 
    server_counts, 
    isalive 
from (select ss_ceastore_config.id , 
      count(server_id)as server_counts, 
      ss_ceastore_config.isalive 
    from ss_test 
    right join ss_ceastore_config 
    on ss_test.store_id = ss_ceastore_config.id 
    group by store_id 
    order by id) join_1 
order by server_counts asc 
limit 1; 

Ваш исходный запрос не работает, потому что вы делали агрегатный SELECT используя MIN() функции наряду с неагрегированными колонками, такими как id и isalive. Я считаю, что MySQL не дает никаких гарантий относительно , которыйid значение будет возвращено вместе с минимумом для этого столбца.

Моя стратегия вернуть все строки в порядке возрастания server_counts, а затем SELECT только в первой строке (что является минимальным).

+0

У меня нет таблицы join_1, она дает ошибку join_1 'не существует – Dipak

+1

@Dipak Прочитайте мой обновленный ответ. –

+0

Wow its working Спасибо – Dipak

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