SQL替换中的FOR循环

SQL替换中的FOR循环,sql,Sql,我是SQL新手,在阅读其他文章时,我刚刚学到的一点是,SQL中没有FOR循环构造,尝试以某种方式模拟它并不是一个好的实践 不管怎样,我遇到了这个问题,我会迭代处理:一个表有两列,fav_retail_id和user_id。第一列包含在收藏夹中添加的零售,第二列包含在收藏夹中添加相应零售的用户 现在,我想知道有多少用户在他们最喜欢的零售店中拥有id=42的零售店。我只写了以下内容: select count(id) from favorite_retails where retail_id = 4

我是SQL新手,在阅读其他文章时,我刚刚学到的一点是,SQL中没有FOR循环构造,尝试以某种方式模拟它并不是一个好的实践

不管怎样,我遇到了这个问题,我会迭代处理:一个表有两列,fav_retail_id和user_id。第一列包含在收藏夹中添加的零售,第二列包含在收藏夹中添加相应零售的用户

现在,我想知道有多少用户在他们最喜欢的零售店中拥有id=42的零售店。我只写了以下内容:

select count(id) from favorite_retails
where retail_id = 42
这似乎很有效。我现在的观点是,我想对其他一些零售店也这样做,比如id=31、54、98的零售店

有没有一种方法可以迭代地获取这些信息? 感谢您的支持,A.

是:

select count(id) from favorite_retails
where retail_id in ( 31, 54, 98 )
是的:

如果您想知道每个问题的答案,可以使用group by:

select retail_id, count(id)
from favorite_retails
where retail_id in ( 31, 54, 98 )
group by retail_id;
如果需要所有零售ID的答案,请删除where。如果需要每个ID的答案,请使用group by:

select retail_id, count(id)
from favorite_retails
where retail_id in ( 31, 54, 98 )
group by retail_id;

如果您想要所有零售ID的答案,请删除where。

SQL通常与基于集合的操作有关,很少与迭代操作有关。在您的情况下,您可以使用简单的groupby和filter by retail\u id


SQL通常是基于集合的操作,很少涉及迭代操作。在您的情况下,您可以使用简单的groupby和filter by retail\u id


查看IN关键字:SQL是一种声明性语言-您关注的是“what”,而不是“how”。您还可以将favorite_retails表与包含所需retail_id的表右键联接。如果IN关键字后面有多个id,这可能是您想要的。查看IN关键字:SQL是一种声明性语言语言-您关注的是“什么”,而不是“如何”,您还可以将favorite_retails表与包含所需retail_id的表右键联接。如果in关键字后有多个id,这可能就是您想要的。