2010-09-01 66 views
21

si realizo una consulta estándar en SQLite:SELECT *, COUNT (*) en SQLite

SELECT * FROM my_table 

consigo todos los registros en mi mesa como se esperaba. Si realizo siguiente consulta:

SELECT *, 1 FROM my_table 

consigo todos los registros como se esperaba con la columna más a la derecha la celebración de '1' en todos los registros. Pero si realizo la consulta:

SELECT *, COUNT(*) FROM my_table 

consigo sólo una fila (con la columna más a la derecha es un recuento correcto). ¿Por qué tales resultados? No soy muy bueno en SQL, tal vez se espera ese comportamiento? Parece muy extraño y unlogical me :(.

Respuesta

26

SELECT *, COUNT(*) FROM my_table no es lo que quiere, y no es SQL realmente válida, tiene que agrupar por todas las columnas que no es un agregado.

te gustaría algo así como

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

SQLite help on aggregate functions (sqlite.org/lang_aggfunc.html) no tiene nada sobre 'group by' :(. ¿Hay alguna documentación que pueda leer sobre esta restricción para una mejor comprensión? – grigoryvp

+2

@Eye of Hell any libro sobre SQL, no es nada específico de sqlite. – nos

+1

esta respuesta me lleva a esta página de la documentación SQLite en los resultados, incluido GROUP BY: https://www.sqlite.org/lang_select.html#resultset – devnul3

9

cuenta (*) es una función de agregación Las funciones de agregación deben ser agrupados por unos resultados significativos usted puede leer:.. count columns group by

+1

SQLite help on aggregate funciones (http://www.sqlite.org/lang_aggfunc.html) no tienen nada acerca de "agrupar por" :(. ¿Hay alguna documentación que pueda leer sobre esta restricción para una mejor comprensión? – grigoryvp

+0

La documentación de SQLite dice " en un grupo "/" en el grupo ". Sugiero leer un tutorial o un libro sobre SQL. –

+0

@EyeofHell only count() es la función agregada GROUP BY es una parte regular de la sintaxis SELECT. http://sqlite.org/lang_select.html – XTL

13

Si w hormiga para contar el número de registros en la tabla, sólo tiene que ejecutar:

SELECT COUNT(*) FROM your_table; 
5

Si lo que quiere es el número total de registros en la tabla adjunta a cada fila se puede hacer algo como

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

Comparte y Disfruta.

Cuestiones relacionadas