Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / извращенный селект / 11 сообщений из 11, страница 1 из 1
02.02.2005, 17:12
    #32897669
А.Грасоff™
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
извращенный селект
mysql - старый, не поддерживает вложенных запросов (а он вообще их
поддерживает, кстати?)

таблица (id - autoincrement):
idref_idname110something.........542718235it is me

таблица большая (5.5 милионов строк)

чтобы получить последнюю запись для ref_id = 35, я делаю так:

1.
Код: plaintext
1.
2.
select max(id) from myTable where ref_id =  35 
-- получаем как результат max(id) == 5427182
2.
Код: plaintext
1.
select name from myTable where id =  5427182  -- результат предыдущего запроса

в принципе, работает шустро, первый запрос за 0.41 секунд, второй за 0.17.
а хочется одним запросом то же самое :)

--
Lacrima Mosa Est
...
Рейтинг: 0 / 0
02.02.2005, 17:13
    #32897672
А.Грасоff™
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
извращенный селект
PS думать совершенно нет желания :)

--
Lacrima Mosa Est
...
Рейтинг: 0 / 0
02.02.2005, 17:32
    #32897728
Dogen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
извращенный селект
А.Грасоff™PS думать совершенно нет желания :)

--
Lacrima Mosa Est
Код: plaintext
select max(id), name from myTable where ref_id =  35 
...
Рейтинг: 0 / 0
02.02.2005, 17:35
    #32897735
Dogen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
извращенный селект
еще более извращенный

Код: plaintext
select name from myTable where ref_id =  35  order by id desc limit  1 , 1  

"пока вы смотрите свой телевизор, инопланетяне через него трахают вам мозги"
...
Рейтинг: 0 / 0
02.02.2005, 17:38
    #32897747
А.Грасоff™
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
извращенный селект
Dogen А.Грасоff™PS думать совершенно нет желания :)

--
Lacrima Mosa Est
Код: plaintext
select max(id), name from myTable where ref_id =  35 


нет:

Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause
...
Рейтинг: 0 / 0
02.02.2005, 17:52
    #32897804
А.Грасоff™
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
извращенный селект
Dogenеще более извращенный

Код: plaintext
select name from myTable where ref_id =  35  order by id desc limit  1 , 1  

"пока вы смотрите свой телевизор, инопланетяне через него трахают вам мозги"пусть пока этот будет :) (0.77 секунд)
...
Рейтинг: 0 / 0
02.02.2005, 18:45
    #32897902
Mamut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
извращенный селект
А.Грасоff™ Dogen
Код: plaintext
select max(id), name from myTable where ref_id =  35 


нет:

Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause

Надо группировать по "реально существующим" колонкам. Использовать GROUP BY:

Код: plaintext
select max(id), name from myTable where ref_id =  35  GROUP BY name
...
Рейтинг: 0 / 0
02.02.2005, 18:47
    #32897905
Mamut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
извращенный селект
Mamut
Код: plaintext
select max(id), name from myTable where ref_id =  35  GROUP BY name


Кстати, а зачем нам where ref_id? Нам же все равно нужна последняя запись, насколько я понимаю..

Код: plaintext
SELECT max(id), name FROM myTable GROUP BY name
...
Рейтинг: 0 / 0
02.02.2005, 18:53
    #32897916
Dogen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
извращенный селект
Mamut А.Грасоff™ Dogen
Код: plaintext
select max(id), name from myTable where ref_id =  35 


нет:

Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause

Надо группировать по "реально существующим" колонкам. Использовать GROUP BY:

Код: plaintext
select max(id), name from myTable where ref_id =  35  GROUP BY name

это выдаст несколько строк для разных name
...
Рейтинг: 0 / 0
02.02.2005, 19:13
    #32897949
Mamut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
извращенный селект
И действительно, что-то я не подумал...

Код: plaintext
select max(id) AS m, name from myTable where ref_id =  35  GROUP BY name ORDER BY m DESC LIMIT  0 ,  1 
...
Рейтинг: 0 / 0
02.02.2005, 19:15
    #32897951
Mamut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
извращенный селект
MamutИ действительно, что-то я не подумал...

Код: plaintext
select max(id) AS m, name from myTable where ref_id =  35  GROUP BY name ORDER BY m DESC LIMIT  0 ,  1 


Что, безусловно, проигрывает вот этому:

Код: plaintext
select name from myTable where ref_id =  35  order by id desc limit  0 , 1 

Посыпаю голову пеплом и удаляюсь :)
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / извращенный селект / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]