powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Использование SQL_CALC_FOUND_ROWS одновременно с DISTINCT
4 сообщений из 4, страница 1 из 1
Использование SQL_CALC_FOUND_ROWS одновременно с DISTINCT
    #39978581
krechetok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем хорошего утра/дня/вечера или даже ночи.

Есть у меня такой запрос:

SELECT DISTINCT SQL_CALC_FOUND_ROWS SUBSTRING(color, 1, 4) as color FROM things WHERE color LIKE '$color%' AND size LIKE '$size%';

И сразу за ним:

SELECT FOUND_ROWS();


для того, чтобы в итоге получить то кол-во записей, как если бы не было DISTINCT. Но к сожалению, после SELECT FOUND_ROWS() я получаю опять только список уникальных записей, а не ожидаемые мной все записи, удовлетворяющие WHERE.

При поиске в яндексе и гугле не нашел точной информации, работает ли в принципе SQL_CALC_FOUND_ROWS совместно с DISTINCT. Поэтому прошу подсказки - как поправить/изменить запрос, чтобы получить в итоге как уникализированный список, так и неуникализированный.

Я конечно же понимаю, можно убрать distinct из запроса и выполнить уникализацию массива результата выборки уже после запроса средствами php, например, с помощью функции array_unique(), однако по некоторым причинам этот способ мне не подходит, нужно решить поставленную задачу именно ресурсами sql
...
Рейтинг: 0 / 0
Использование SQL_CALC_FOUND_ROWS одновременно с DISTINCT
    #39978587
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krechetok
При поиске в яндексе и гугле не нашел точной информации, работает ли в принципе SQL_CALC_FOUND_ROWS совместно с DISTINCT.
Достаточно посмотреть в документацию.
https://dev.mysql.com/doc/refman/8.0/en/select.html SQL_CALC_FOUND_ROWS tells MySQL to calculate how many rows there would be in the result set, disregarding any LIMIT clause.Про DISTINCT ничего нет, значит количество записей считается после DISTINCT-а.

Да и проверить элементарно:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
select SQL_CALC_FOUND_ROWS t.f1 
from
(select 1 f1
union all
select 2 f1
union all
select 1 f1) t;

select FOUND_ROWS();

select distinct SQL_CALC_FOUND_ROWS t.f1 
from
(select 1 f1
union all
select 2 f1
union all
select 1 f1) t;

select FOUND_ROWS();

https://www.db-fiddle.com/#&togetherjs=0g1w9ao9um
...
Рейтинг: 0 / 0
Использование SQL_CALC_FOUND_ROWS одновременно с DISTINCT
    #39978589
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krechetok
для того, чтобы в итоге получить то кол-во записей, как если бы не было DISTINCT
Отдельным запросом с COUNT(*)
...
Рейтинг: 0 / 0
Использование SQL_CALC_FOUND_ROWS одновременно с DISTINCT
    #39979057
Фотография Жук в муравейнике
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krechetok
для того, чтобы в итоге получить то кол-во записей, как если бы не было DISTINCT
Код: sql
1.
count(*) over()
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Использование SQL_CALC_FOUND_ROWS одновременно с DISTINCT
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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