SELECT *, COUNT (*) в SQLite - PullRequest
       0

SELECT *, COUNT (*) в SQLite

22 голосов
/ 01 сентября 2010

Если я выполняю стандартный запрос в SQLite:

SELECT * FROM my_table

Я получаю все записи в моей таблице, как и ожидалось. Если я выполню следующий запрос:

SELECT *, 1 FROM my_table

Я получаю все записи, как и ожидалось, с крайним правым столбцом, содержащим «1» во всех записях. Но если я выполню запрос:

SELECT *, COUNT(*) FROM my_table

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

Ответы [ 4 ]

27 голосов
/ 01 сентября 2010

SELECT *, COUNT(*) FROM my_table - это не то, что вам нужно, и это не совсем правильный SQL, вам нужно сгруппировать по всем столбцам, которые не являются совокупными.

Вы бы хотели что-то вроде

SELECT somecolumn,someothercolumn, COUNT(*) 
   FROM my_table 
GROUP BY somecolumn,someothercolumn
15 голосов
/ 16 апреля 2015

Если вы хотите посчитать количество записей в вашей таблице, просто запустите:

    SELECT COUNT(*) FROM your_table;
9 голосов
/ 01 сентября 2010

count (*) - агрегатная функция.Агрегатные функции должны быть сгруппированы для получения значимых результатов.Вы можете прочитать: Количество столбцов группы по

5 голосов
/ 16 апреля 2015

Если вам нужно общее количество записей в таблице, добавленной к каждой строке, вы можете сделать что-то вроде

SELECT *
  FROM my_table
  CROSS JOIN (SELECT COUNT(*) AS COUNT_OF_RECS_IN_MY_TABLE
                FROM MY_TABLE)

Поделиться и наслаждаться.

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