gpt4 book ai didi

php - 在 PHP 中向 MySQL 查询添加条件时遇到问题

转载 作者:行者123 更新时间:2023-11-29 18:29:09 26 4
gpt4 key购买 nike

我是 PHP 和 MySQL 新手,我在编写我想要发生的事情时遇到问题,这是我的查询:

$query = "SELECT SUM(op.total) as amount_sum
, SUM(r.recurring_price) as recurring_price
, op.subscription
FROM " . DB_PREFIX . "order o
LEFT JOIN " . DB_PREFIX . "order_product op
ON(op.order_id=o.order_id)
LEFT JOIN " . DB_PREFIX . "order_recurring r
ON(r.order_id=o.order_id)
WHERE order_status_id IN(" . implode(",", $implode) . ")
AND o.date_added >= (CURDATE() - INTERVAL 12 MONTH)";

我想将此条件添加到查询中

AND op.subscription ='1'

我只希望在 op.subscription 等于 1 时将其添加到查询中。我使用它进行过滤,因此将其添加到主查询中不起作用,但我不明白如何添加它。我认为是一个 if 语句,但我是否必须将 op.subscription 设置为变量?我知道我想要做什么,但我不知道如何在代码中正确编写它

最佳答案

I want to add this conditon to the query

将其连接到您已有的查询末尾将得到您想要的结果。

值得注意的是,

  • 在 WHERE 子句中添加此谓词会将第一个 LEFT JOIN 转换为过于昂贵的 INNER JOIN。使用显式 INNER JOIN 会更高效。

  • 您引用了一个整数值。如果表中的基础数据类型是数字,那么这也是低效的。尽管优化器应该能够以可忽略的开销处理这种情况,但如果盲目忽略数据类型,您将会遇到问题。 OTOH 如果属性的数据类型是 varchar,则表明您使用了错误的数据类型。

  • 如果您要使用 SQL 保留字(例如 order)作为表或属性名称,那么最好将它们括在反引号中,以便 SQL 解析器知道它们是名称不是说明。

关于php - 在 PHP 中向 MySQL 查询添加条件时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45868655/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com