2009-06-03 8 views
0

Скажем, я имел следующую таблицу:MySQL Присоединяйтесь столбец SUM по всей таблице

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

Я хочу присоединиться к SUM всех id с, скажем, на всю таблицу, так это выглядит:

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

Я попытался сделать LEFT JOIN сам по себе, но я получаю только 1-й результат - любые мысли?

Спасибо!

ответ

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` 

Это рядный выбор, и они могут быть дорогими. Но он работает здесь.

+0

Это некоррелированный скалярный подзапрос, поэтому теоретически он должен выполняться один раз и не повторяться для каждой строки. –

+0

Я посмотрел результаты EXPLAIN тестового запроса, и этот подзапрос выполнялся только один раз. Таким образом, у него есть два запроса, проходящие через все строки. –

Смежные вопросы