mysql多个查询或多个'或'运营商

时间:2015-10-26 20:44:28

标签: php mysql operators mysqli-multi-query


我们说我有这张桌子:

img_id, img_author, img_path
1     | BillyDoe  | img1.jpg
2     | BillyDoe  | img2.jpg
3     | BillyDoe  | img3.jpg

我运行另一个匹配某些特定标准的查询 并且该查询返回一个数组,许多img_author名称如下: BillyDoe,JillDoe,John Doe等...

我要做的第二件事就是获取所有图像 来自与作者姓名匹配的图像表

与所有作者一起创建循环会更好吗? 命名返回的上一个查询并多次运行查询

select img_path from images_table where img_author = $curr_author_name

或者 我应该创建一个自定义函数,将加入所有作者姓名和 使用多个'或'运行单个sql查询像这样的运营商:

select img_path from images_table where img_author = BillyDoe or img_author =  JillDoe or img_author =  JohnDoe ... x100 times

我是否会有任何一种性能损失/收益 两种方式?或者有更好的选择,如多查询等。 总是说性能明智,哪种方法资源较少 激烈?

谢谢。

1 个答案:

答案 0 :(得分:2)

我会使用连接执行单个查询,这样您就可以查询正在查找的img_author名称,然后加入此表以获取img_path信息。

您还没有显示您提及的第一个查询以确定作者姓名,因此我无法给您一个具体的示例。 BUt该查询可能如下所示:

SELECT
    it.img_path AS img_path
FROM
    whatever_table_is_in_your_first_query AS x
INNER JOIN
    img_table AS it
ON x.author = it.img_author
WHERE
   ... /* whatever criteria you use to get author names */

在嵌套循环中进行查询绝对应该被视为一种反模式,除非你有一个非常具体的理由这样做并理解性能权衡。