2009-06-03 6 views
0

Disons que j'avais le tableau suivant:MySQL Rejoignez la colonne SUM sur toute la table

id num_votes total_rating 
------------------------------- 
1  20   30 
2  40   13 
3  15   25 

Je veux rejoindre la somme de tous id s, disons, sur toute la table il ressemble à:

id num_votes total_rating sum 
-------------------------------------- 
1  20   30    6 
2  40   13    6 
3  15   25    6 

J'ai essayé de faire un LEFT JOIN sur lui-même, mais j'ai seulement un résultat de 1 rangée - des pensées?

Merci!

Répondre

1
SELECT t.*, idsum 
FROM (
     SELECT SUM(id) AS idsum 
     FROM mytable 
     ) q, 
     mytable t 
1
SELECT id, num_votes, total_rating, (SELECT SUM(id) FROM `table`) AS sum FROM `table` 

Ceci est une ligne sélectionner et ils peuvent être coûteux. Mais ça marche ici.

+0

C'est une sous-requête scalaire non corrélée donc en théorie elle ne devrait être exécutée qu'une seule fois et non répétée pour chaque ligne –

+0

J'ai regardé les résultats EXPLAIN d'une requête de test et cette sous-requête n'a fonctionné qu'une seule fois. Donc, cela a deux requêtes qui traversent toutes les lignes. –

Questions connexes