получить общее количество элементов, используя ключевое слово LIMIT - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь вернуть как мои запрошенные (и ограниченные) результаты, так и общее количество элементов в таблице.Вот что у меня есть.

    SELECT id, name
    FROM ??
    WHERE
        user_id = ?
    LIMIT ? , ?;

    SELECT COUNT(*) as total
    FROM ??
    WHERE
        user_id = ?
    ;

Это два SQL-запроса, и мне было интересно, как или возможно ли объединить их в один.Я хотел бы, чтобы итоговое значение было само по себе (если возможно), иначе как прикрепленный столбец к каждой строке.Или, может быть, то, что у меня сейчас, - самое оптимальное решение.

Ответы [ 3 ]

0 голосов
/ 21 мая 2018

Другой способ сделать то же самое, используя CROSS JOIN

SELECT 
        t1.id,
        t1.[name],
        t2.cnt 
FROM 
        yourtable t1

CROSS JOIN 
        (
            SELECT 
                    COUNT(1) AS cnt 
            FROM 
                    yourtable 
            WHERE 
                    [user_id] = ? 
        ) t2
WHERE 
        t1.[user_id] = ?
LIMIT 
        ?, ?
0 голосов
/ 27 мая 2018
SELECT SQL_CALC_FOUND_ROWS
    ...
    LIMIT ...

SELECT FOUND_ROWS();

Ссылка.

Или я бы проголосовал за CROSS JOIN, а не подзапрос.

0 голосов
/ 21 мая 2018

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

SELECT
    id,
    name,
    (SELECT COUNT(*) FROM yourTable WHERE user_id = ?) total
FROM yourTable
WHERE
    user_id = ?;

Но, с точки зрения разделения проблем, это, вероятно, не лучшая практика.Вместо этого, как правило, я ожидаю увидеть здесь два отдельных запроса.

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