gpt4 book ai didi

php - MySQL - LEFT JOIN 找不到任何内容

转载 作者:行者123 更新时间:2023-11-29 14:17:15 25 4
gpt4 key购买 nike

我收到以下查询:

SELECT      budgets_income.income_amount, budgets_income.rule_type, budgets_income_rules.day_of_week, budgets_income_rules.interval_week, budgets_income_rules.fixed_day, budgets_income_rules.last_day_month, budgets_income_rules.date_start, budgets_income_rules.date_end
FROM budgets_income
LEFT JOIN budgets_income_rules USING (income_id)
WHERE budgets_income.account_id = :account_id
AND
(
budgets_income_rules.date_start <= :date_end
)

如果budgets_income.rule_type等于1或2,则表中budgets_income_rules我在 LEFT JOIN 中得到了一条规则- 这很好。

现在,有时如果规则等于 0,则意味着该规则不存在。由于该规则不存在,因此字段 budgets_income_rules.date_start也不 - 意味着该行不会与其他行一起获取(因为 WHERE budgets_income_rules.date_start <= :date_end )。

我尝试过这些事情:

  • 首先,我这样做了:

    AND
    (
    budgets_income_rules.date_start <= :date_end
    OR
    budgets_income_rules.date_start NOT EXISTS
    )

    效果不太好,因为它根本不起作用。

  • 之后,我又做了一次这样的尝试:

    AND
    (
    budgets_income_rules.date_start <= :date_end
    OR
    budgets_income_rules.date_start IS NULL
    )

这确实符合逻辑,因为如果 MySQL 在 LEFT JOIN 中找不到该行, ,则该列设置为 NULL .

现在我的问题是,有更好的方法吗?

谢谢。

最佳答案

此时您还将获得记录中 date_start 为 NULL 的行。您可以使用预算_收入_规则表的 ID 来测试 NULL,因为只有在该行不存在的连接查询中,该值才会为 NULL。

budgets_income_rules.id IS NULL

关于php - MySQL - LEFT JOIN 找不到任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12424797/

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