【发布时间】:2011-06-02 22:56:55
【问题描述】:
有什么办法吗?
SELECT sum(price) from table2 WHERE id=(SELECT theid FROM table1 WHERE user_id="myid")
我有用户购买的带有物品 ID 的 table1。我想计算用户购买的所有物品的总和。
上面的查询合法吗?如果不是,正确的形式是什么?
【问题讨论】:
有什么办法吗?
SELECT sum(price) from table2 WHERE id=(SELECT theid FROM table1 WHERE user_id="myid")
我有用户购买的带有物品 ID 的 table1。我想计算用户购买的所有物品的总和。
上面的查询合法吗?如果不是,正确的形式是什么?
【问题讨论】:
将where id=(SELECT 更改为where id IN (SELECT
或者你真正想要的可能是:
SELECT sum(price) FROM table2 INNER JOIN table1 ON table2.id = table1.theid WHERE table1.user_id = 'my_id'
【讨论】:
JOIN 会更具可读性:
SELECT SUM(price) FROM table2
INNER JOIN table1 ON table2.id = table1.theid
WHERE table1.user_id = "myid"
【讨论】:
你也可以使用 JOIN 语法
SELECT sum(price) from table2 t2
join table1 t1 on t1.theID = t2.id
WHERE t1.user_id="myid"
应该给你同样的结果
【讨论】:
您应该使用 SQL JOIN 来提供该功能。
SELECT SUM(table2.price) JOIN table1 ON
table2.id=table1.theid WHERE table1.user_id="myid"
【讨论】:
你的查询没问题,只要subselect每次只返回一行。
如果返回的行数更多,您必须将查询更改为:
[...] WHERE id IN (SELECT [...]
注意:在您的情况下,像其他人建议的简单内部连接会更可修改(并且可能会更快一点) - 但您所写的内容绝对没问题(有总是有多种方法来获得所需的结果 - 现在总是很容易判断哪个是“最好的”;-))
【讨论】: