mysql 多个查询或多个 'or' 运算符

mysql multiple queries or multiple 'or' operators


假设我有这个 table:

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

我 运行 另一个符合某些特定条件的查询 该查询 returns 一个包含许多 img_author 名称的数组,例如: BillyDoe、JillDoe、JohnDoe 等...

我要做的第二件事是获取所有图像 图片 table 匹配作者姓名

要不要和所有作者一起创建一个循环更好 命名先前返回的查询,并多次 运行 查询

select img_path from images_table where img_author = $curr_author_name

或者 我应该创建一个自定义函数,它将加入所有作者姓名和 运行 具有多个 'or' 运算符的单个 sql 查询,如下所示:

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

我会有任何表现吗loss/gain做这些中的任何一个 两种方式?或者有更好的选择,如多查询等。 总是明智地谈论性能,哪种方法会占用更少的资源 激烈?

谢谢。

我会用连接做一个查询,这样你就可以查询你正在寻找的 img_author 名字,然后连接这个 table 得到 img_path信息。

您没有显示您提到的第一个确定作者姓名的查询,因此我无法提供具体示例。但是该查询可能如下所示:

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 */

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