powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / извращенный селект
11 сообщений из 11, страница 1 из 1
извращенный селект
    #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
извращенный селект
    #32897672
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS думать совершенно нет желания :)

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

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

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

"пока вы смотрите свой телевизор, инопланетяне через него трахают вам мозги"
...
Рейтинг: 0 / 0
извращенный селект
    #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
извращенный селект
    #32897804
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dogenеще более извращенный

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

"пока вы смотрите свой телевизор, инопланетяне через него трахают вам мозги"пусть пока этот будет :) (0.77 секунд)
...
Рейтинг: 0 / 0
извращенный селект
    #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
извращенный селект
    #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
извращенный селект
    #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
извращенный селект
    #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
извращенный селект
    #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
11 сообщений из 11, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / извращенный селект
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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