Php MySQL,使用内部联接的更新查询以静默方式失败
我有一个使用内部联接的MySQL查询更新不起作用,而类似的使用内部联接的select查询工作得很好 工作选择查询Php MySQL,使用内部联接的更新查询以静默方式失败,php,mysql,sql,database,Php,Mysql,Sql,Database,我有一个使用内部联接的MySQL查询更新不起作用,而类似的使用内部联接的select查询工作得很好 工作选择查询 SELECT fa.tax_rate, efa.entity_id FROM water_civicrmv2.civicrm_financial_account as fa INNER JOIN water_civicrmv2.civicrm_entity_financial_account efa ON efa.financial_account_id = fa.id
SELECT fa.tax_rate, efa.entity_id
FROM water_civicrmv2.civicrm_financial_account as fa
INNER JOIN water_civicrmv2.civicrm_entity_financial_account efa ON efa.financial_account_id = fa.id
INNER JOIN water_civicrmv2.civicrm_option_value cov ON cov.value = efa.account_relationship
INNER JOIN water_civicrmv2.civicrm_option_group cog ON cog.id = cov.option_group_id
WHERE efa.entity_table = 'civicrm_financial_type'
AND cov.name = 'Sales Tax Account is'
AND cog.name = 'account_relationship'
AND fa.is_active = 1
更新查询失败
UPDATE water_civicrmv2.civicrm_financial_account as fa
INNER JOIN water_civicrmv2.civicrm_entity_financial_account efa ON efa.financial_account_id = fa.id
INNER JOIN water_civicrmv2.civicrm_option_value cov ON cov.value = efa.account_relationship
INNER JOIN water_civicrmv2.civicrm_option_group cog ON cog.id = cov.option_group_id
SET fa.tax_rate = '123123'
WHERE efa.entity_table = 'civicrm_financial_type'
AND cov.name = 'Sales Tax Account is'
AND cog.name = 'account_relationship'
AND fa.is_active = 1
我真的不知道为什么它会无声地失败,因为没有语法错误,只是什么也没发生 更改您的更新SQL,以便更新的对象仅为单个表水\u civicrmv2.civicrm\u财务\u帐户:
UPDATE water_civicrmv2.civicrm_financial_account as fa
SET fa.tax_rate = '123123'
WHERE fa.id =
(SELECT fa.id
FROM water_civicrmv2.civicrm_entity_financial_account efa
INNER JOIN water_civicrmv2.civicrm_option_value cov ON cov.value = efa.account_relationship
INNER JOIN water_civicrmv2.civicrm_option_group cog ON cog.id = cov.option_group_id
WHERE efa.financial_account_id = fa.id
AND efa.entity_table = 'civicrm_financial_type'
AND cov.name = 'Sales Tax Account is'
AND cog.name = 'account_relationship'
AND fa.is_active = 1)
如果这个选择有效,我就吃我的短裤。如果我已经更新了问题,请再看一看。如果解释器没有抛出任何错误,那一定是数据问题。我建议将可管理的数据量拉入Excel,然后迭代运行查询并检查输出,以确保联接按预期执行。我不是MySQL专家,所以更新查询中可能存在语法错误。您是否在MySQL控制台中运行
SELECT
query,然后在PHP中运行UPDATE
query?我这么说是因为有句点限定符建议跨数据库查询。在PHP中,您通常连接到一个数据库,而在服务器控制台上您可以访问所有数据库。感谢您的回答,但结果仍然相同,并且没有更新字段。我看到您正在使用字符串文字“123123”更新fa.tax_rate。该字段定义为字符串类型还是数字类型?假设您使用的是CiviCRM数据库,我认为问题在于您为fa.tax_rate指定的值超出范围。该列定义为decimal(10,8),它将值限制在-99.9999999到99.9999999之间。我试过了,但问题不是这样。我尝试了值50.55而不是123123,但仍然无法更新该字段