SELECT SUM(SELECT type.value
FROM type,item_type
WHERE item_type.type_id = type.id AND item_type.type_id IN (4,7)
GROUP BY type.id)
此查询有什么问题?我想总结来自内部查询的所有行。
答案 0 :(得分:3)
您不能将SUM()函数与subquerys一起使用。根据手册,SUM()函数返回数字列的总和。你正在做的事情是这样的:SELECT 1 + 50 + 30 + 10。你在哪里选择价值表? sintax是:
SELECT SUM(column) FROM table
看看: http://www.w3schools.com/sql/sql_func_sum.asp
正确的方法是
SELECT t.id, SUM(t.value)
FROM type as t,
INNER JOIN item_type as it
ON it.type_id = t.id
WHERE it.type_id IN (4,7)
GROUP BY t.id
考虑使用JOIN sintax而不是多个表:SQL left join vs multiple tables on FROM line?
答案 1 :(得分:1)
您应该学会使用正确的join
语法和表别名:
SELECT SUM(t.value)
FROM type t JOIN
item_type it
ON it.type_id = t.id
WHERE it.type_id IN (4,7);
如果您想为每个type.id
添加一行,则需要GROUP BY
。
您的查询不起作用,因为子查询不允许作为聚合函数的参数。即使它们是,上下文将是标量子查询,并且您的子查询可能返回多行。
答案 2 :(得分:0)
在没有内部查询的情况下使用SUM
:
SELECT type.id, SUM(type.value)
FROM type,item_type
WHERE item_type.type_id = type.id AND item_type.type_id IN (4,7)
GROUP BY type.id