2009-07-21 29 views

Respuesta

15
SELECT (SELECT COUNT(*) FROM comments) 
    + (SELECT COUNT(*) FROM tags) 
    + (SELECT COUNT(*) FROM search) 
+2

Sí, exactamente. Nota: en Oracle, debe agregar "de doble" a esa sintaxis. –

+0

+1 Muy bien, lo haría de esta manera. – Zack

2
SELECT (
     SELECT COUNT(*) 
     FROM comments 
     ) + 
     (
     SELECT COUNT(*) 
     FROM tags 
     ) + 
     (
     SELECT COUNT(*) 
     FROM search 
     ) 
6

Uno más (no estoy seguro si es compatible con MySQL, sin embargo - que funciona en SQL Server):

SELECT SUM(Counts) FROM 
    (SELECT COUNT(*) AS Counts FROM COMMENTS UNION ALL 
    SELECT COUNT(*) FROM Tags UNION ALL 
    SELECT COUNT(*) FROM Search) s 
+0

Curioso: ¿cuáles son los pros/contras de cada uno de los suyos y las respuestas SQL aceptadas? ¿Es uno mejor en términos de rendimiento? ¿Algo más? – Liao

+0

Para Liao: ejecute el analizador de consultas y vea lo que dice. Ellos pueden ser sinónimos. –

+0

Muy bonito. +1 por la elegancia de las declaraciones de SQL. – Zack

2
SELECT SUM(ThisCount) 
    FROM (
    SELECT COUNT(*) AS ThisCount 
     FROM comments 

    UNION ALL 

    SELECT COUNT(*) AS ThisCount 
     FROM tags 

    UNION ALL 

    SELECT COUNT(*) AS ThisCount 
     FROM search 
    ) 
+3

debería ser unión todo – dotjoe

+0

@dotjoe: ¡Buena captura! – n8wrl

+0

@ n8wrl: le gana unos minutos. Además de la captura de dotjoe, y solo para su información, el alias de columna solo se requiere en la primera subselección, ya que se ignora en los otros tres durante la operación de unión. –

Cuestiones relacionadas