Php mysql中“WHERE”和“IN”的区别

Php mysql中“WHERE”和“IN”的区别,php,mysql,Php,Mysql,以下两者之间的区别是什么: SELECT * FROM news WHERE cat_id IN (1, 2, 6, 8); 并创建一个循环: foreach($cat as $key => $value){ $sql = "SELECT * FROM news WHERE cat_id = $value['id']; } 第一个示例仅运行1个查询,而第二个示例运行N个查询 哦,是的,千万不要用第二种方法。第一个示例只运行1个查询,而第二个示例运行N个查询 哦,是的,千万不

以下两者之间的区别是什么:

SELECT * FROM news WHERE cat_id IN (1, 2, 6, 8);
并创建一个循环:

 foreach($cat as $key => $value){
    $sql = "SELECT * FROM news WHERE cat_id = $value['id'];
 }

第一个示例仅运行1个查询,而第二个示例运行N个查询


哦,是的,千万不要用第二种方法。第一个示例只运行1个查询,而第二个示例运行N个查询


哦,是的,千万不要用第二种方法。第一个例子要有效得多,因为只运行一个sql查询。第二个示例有x个查询量,速度要慢得多


我想说的是,您永远不应该使用第二种方法,而应该始终使用第一种方法。

第一个示例效率更高,因为只运行一个sql查询。第二个示例有x个查询量,速度要慢得多


我想说的是,您永远不应该使用第二种方法,而应该始终使用第一种方法。

我认为,在某些情况下,当您希望按照输入ID的确切顺序从数据库中提取数据时,您可能需要使用第二种语句


在这种情况下,当您使用第一个查询时,如果输入ID 1、2、6、8在DB中的顺序不是这样,则结果可能不是这样。与数据库匹配的第一个id将返回结果。

我认为在某些情况下,当您希望按照输入id的确切顺序从数据库中提取数据时,可能需要使用第二个语句



在这种情况下,当您使用第一个查询时,如果输入ID 1、2、6、8在DB中的顺序不是这样,则结果可能不是这样。匹配DB的第一个id将返回结果。

现在有一个真正的问题:-将y、z、q中的x与x=y或x=z或x=q进行比较,包括NULL处理的差异(如果有)。@meder,我如何告诉我的用户您的查询是错误的:@然后告诉他必须运行他的查询count$cat time,而另一个只需运行一次。这意味着单个查询的任何开销都是开销,比如通过底层套接字进行通信,都会乘以count$cat,即使不需要这样做。此外,使用IN操作符可以让数据库引擎优化其查询计划,知道它需要找到几个特定的条目;如果您执行几个单独的查询,您就不能这样做。@zneak,我知道第一个查询是正确的,我在中使用了。但我知道他明天会把我的问题改成第二个问题:。@Thennone那么你有什么要求?我以为你在寻找支持你观点的论据。现在有一个真正的问题:-将y,z,q中的x与x=y或x=z或x=q进行比较,包括NULL处理方面的差异,如果有的话。@meder,我怎么能告诉我的客户你的查询是错误的:@TheNone告诉他他的查询必须运行count$cat time,而另一个只需运行一次。这意味着单个查询的任何开销都是开销,比如通过底层套接字进行通信,都会乘以count$cat,即使不需要这样做。此外,使用IN操作符可以让数据库引擎优化其查询计划,知道它需要找到几个特定的条目;如果您执行几个单独的查询,您就不能这样做。@zneak,我知道第一个查询是正确的,我在中使用了。但我知道他明天会把我的问题改成第二个问题:。@Thennone那么你有什么要求?我以为你在寻找支持你观点的论据。现在有一个真正的问题:-将y,z,q中的x与x=y或x=z或x=q进行比较,包括NULL处理的差异,如果有的话。@zneak-LOL,我的错。我指的是第二个。现在来问一个真正的问题:-将y,z,q中的x与x=y或x=z或x=q进行比较,包括NULL处理的差异,如果有的话。@zneak-LOL,我的错。我是说第二个。没有订单,所以我怀疑这是否有用。我的评论是为什么要运行一个查询x次,你如何用第二种方法生成一个排序的结果集。我只是为了我的一个案例,我需要用第二种方法,否则我就是傻瓜。我有一个用户id数组,看起来像[10,2,5,1,4],我需要获取这些家伙的用户属性。我用第二种方法,得到我想要的。当然,您可以通过其他一些方法来完成它,比如对输入id数组进行排序,然后使用IN和orderby来获取它。但正如我所说的,我发现在某些情况下,第二种方法有点有用。没有顺序,所以我怀疑这是否有用。我的评论是为什么要运行一个查询x次,你如何用第二种方法生成一个排序的结果集。我只是为了我的一个案例,我需要用第二种方法,否则我就是傻瓜。我有一个用户id数组,看起来像[10,2,5,1,4],我需要获取这些家伙的用户属性。我用第二种方法,得到我想要的。当然,您可以通过其他一些方法来完成它,比如对输入id数组进行排序,然后使用IN和orderby来获取它。但正如我所说,我发现在某些情况下,第二种方法有些有用。