MySql在另一个选择里面选择?

时间:2011-01-03 17:00:37

标签: mysql select

有没有办法做到这一点?

SELECT sum(price) from table2 WHERE id=(SELECT theid FROM table1 WHERE user_id="myid")

我有table1,其中包含用户已购买的商品ID。我想计算用户购买的所有商品的总和。

上述查询是否合法?如果没有,那么正确的形式是什么?

5 个答案:

答案 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"