php - 如何正确使用Mysql SELECT * FROM table WHERE 列='Any_value_in_Array'

标签 php mysql join

好吧,所以在设置表和查询它们方面我基本上是个菜鸟......但我认为我的标题很好地解释了我正在尝试做的事情,并且我相信我正在寻找一种方法使用 JOIN 但我一生都无法弄清楚如何做到这一点(我已经阅读了一些关于 S.O. 的示例和网络上的教程,但无法理解周围)。基本上我有一个名为 userFollowsSeries 的表,它有三列

 | userID | seriesID | series_title |
 ------------------------------------
 |   int  |  int     |    var_char  |

和另一个表series,它有一个主键seriesID和一系列有关该系列的相关信息。现在我想获取表series中用户的每个seriesID的所有信息。

现在我基本上尝试根据单个userID获取每个seriesID,如下所示

$userFollows = mysqli_query($con, "SELECT * FROM userFollowsSeries WHERE userID='$user_id'") or die(mysql_error());
while($follows = mysqli_fetch_array($userFollows)){
    $show_id=$follows['seriesID'];
    echo $show_id;  //this is realy just here for testing 
    $result = mysqli_query($con, "SELECT * FROM series WHERE id='$show_id'") or die(mysql_error());

    while($row = mysqli_fetch_array($result)){
          // i get and print out everything in a formatted for my html code 
     }
 }

现在我意识到这不太理想,效率也不是很高,但无法弄清楚如何在一个语句/查询中再次使用我假设某种 JOIN 语句来完成所有这些操作。我所拥有的一切都有效,但速度非常慢(大概是因为 while 循环中嵌入了查询)。不管怎样,你可以帮助我了解如何通过连接或新的表结构来改进这一点,这将是非常棒的,并且非常感激。

最佳答案

类似 SELECT * FROM `series` WHERE `id` IN (SELECT `SeriesID` FROM `userFollowsSeries` WHERE `userID`=$user_id) 的内容应该可以很好地工作。请注意,它可能无法充分利用索引。最好选择 ID,构建它们的数组,然后使用 IN 和 implode 来加入该数组。

关于php - 如何正确使用Mysql SELECT * FROM table WHERE 列='Any_value_in_Array',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16745519/

相关文章:

php - Silex:动态路由缩放代码库

php - 选择 like but 作为分隔符之间的整个字符串

php - 如何在 wordpress 中编辑默认页面?(索引页)

php - 从 MySQL_query 切换到 PDO 导致不必要的转义

mysql - 从连接或子查询中选择记录作为列(子数组)

php-ini - 'local value' 和 'master value' 有什么区别?

MySQL:JOIN 和 WHERE 有多个匹配项

php - 交换 SQL 主键而不影响自增?

MySQL:在日期时间记录之间选择

mysql - 为什么将多行合并为一列会重复数据?