Php mysql多个查询或多个';或';操作员
Php mysql多个查询或多个';或';操作员,php,mysql,operators,mysqli-multi-query,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_作者姓名,如: 比丽多,吉尔多,约翰多等 我要做的第二件事是得到所有的图像 从与作者姓名匹配的图像表中 创建一个包含所有作者的循环会更好吗 命名上一个返回的查询,并像这
假设我有这张桌子:
img_id, img_author, img_path
1 | BillyDoe | img1.jpg
2 | BillyDoe | img2.jpg
3 | BillyDoe | img3.jpg
我运行了另一个符合某些特定标准的查询
该查询返回一个数组,其中包含许多img_作者姓名,如:
比丽多,吉尔多,约翰多等
我要做的第二件事是得到所有的图像
从与作者姓名匹配的图像表中
创建一个包含所有作者的循环会更好吗
命名上一个返回的查询,并像这样多次运行查询
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
我做这两件事时会有任何性能损失/收益吗
两条路?或者有更好的选择,比如多查询等等。
总是谈论性能问题,哪种方法会减少资源
激烈的
谢谢。我将使用联接进行单个查询,这样您就可以查询要查找的img_作者姓名,然后根据此表进行联接以获取img_路径信息 您还没有显示您提到的用于确定作者姓名的第一个查询,因此我无法给出具体示例。但该查询可能如下所示:
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 */
在嵌套循环中执行查询绝对应该被视为一种需要避免的反模式,除非您有非常具体的理由这样做,并且理解性能权衡。非常确定您需要在那里转义这些字符串,除非
BillyDoe
是一列,否则asimg\u author=BillyDoe
不是有效的SQL。第一个查询是在同一个表上还是在不同的表上找到作者?请使用一个带有或
s的查询。最好使用authorid
s,并使用IN()
子句。谢谢您的回答!