有没有办法做到这一点?
SELECT sum(price) from table2 WHERE id=(SELECT theid FROM table1 WHERE user_id="myid")
我有table1,其中包含用户已购买的商品ID。我想计算用户购买的所有商品的总和。
上述查询是否合法?如果没有,那么正确的形式是什么?
答案 0 :(得分:18)
将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'
答案 1 :(得分:7)
只要subselect每次只返回一行,您的查询就可以了。
如果返回的行数更多,则必须将查询更改为:
[...] WHERE id IN (SELECT [...]
注意:在你的情况下,像其他人建议的简单内部连接会更加可更新(并且可能更快一点) - 但你所写的内容绝对可以(有总是有多种方法可以获得理想的结果 - 而且现在总是很容易告诉一个人是“最好的”;-))
答案 2 :(得分:2)
您也可以使用JOIN语法
SELECT sum(price) from table2 t2
join table1 t1 on t1.theID = t2.id
WHERE t1.user_id="myid"
应该给你相同的结果
答案 3 :(得分:1)
JOIN
会更具可读性:
SELECT SUM(price) FROM table2
INNER JOIN table1 ON table2.id = table1.theid
WHERE table1.user_id = "myid"
答案 4 :(得分:1)
您应该使用SQL JOIN
来提供该功能。
SELECT SUM(table2.price) JOIN table1 ON
table2.id=table1.theid WHERE table1.user_id="myid"