Подтвердить что ты не робот

SELECT *, COUNT (*) в SQLite

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

SELECT * FROM my_table

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

SELECT *, 1 FROM my_table

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

SELECT *, COUNT(*) FROM my_table

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

4b9b3361

Ответ 1

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

Вам нужно что-то вроде

SELECT somecolumn,someothercolumn, COUNT(*) 
   FROM my_table 
GROUP BY somecolumn,someothercolumn

Ответ 2

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

    SELECT COUNT(*) FROM your_table;

Ответ 3

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

Ответ 4

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

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