【问题标题】:Magento Catalog Search Query ExplanationMagento 目录搜索查询说明
【发布时间】:2014-09-09 19:47:18
【问题描述】:

更新:已回答问题,请参阅Magento Catalog Search Query Constraint Error 了解我的后续问题。

在 Magento 目录中进行某些搜索时,我遇到了外键约束错误。这是导致该问题的查询:

INSERT INTO `catalogsearch_result` 
(
    SELECT 
        '0', 
        `s`.`product_id`, 
        -(
            ( MATCH(`s`.`data_index`) AGAINST ('ip335') ) + 
            ( 5 * ( MATCH(`s`.`data_index_1`) AGAINST('ip335') ) ) + 
            ( 3 * ( MATCH(`s`.`data_index_2`) AGAINST('ip335') ) ) + 
            ( 2 * ( MATCH(`s`.`data_index_3`) AGAINST ('ip335') ) ) 
        ) 

    FROM `mikkelrickycatalogsearch_fulltext` AS `s` 

    INNER JOIN `catalog_product_entity` AS `e`
        ON `e`.`entity_id`=`s`.`product_id` 

    WHERE 
        (
            (`s`.`data_index` LIKE '%ip335%')
        ) 
        AND `s`.`store_id`='2'
) 
ON DUPLICATE 
    KEY UPDATE `relevance` = VALUES(`relevance`);

我们使用的是 MikkelRicky_CatalogSearch 扩展,但即使是核心搜索代码也会产生类似的查询 (INSERT/ON DUPLICATE KEY)。

我正在尝试理解 SQL 中的这种查询类型。我只是不明白 INSERT 语句如何与 DUPLICATE KEY UPDATE 一起使用。谁能提供一些实际的解释?谢谢!

【问题讨论】:

  • 如果 MySQL 发现 catalogsearch_result 的键 query_idproduct_id 重复,而不是 MySQL 引擎更新值 relevance = VALUES('relevance'); 而不是插入
  • 太棒了,这很有道理。谢谢@P0ZiTR0N。请将其发布为答案,以便我给予您信任。现在,我可以就约束错误提出下一个问题(请参阅我的编辑)。

标签: mysql magento


【解决方案1】:

如果 MySQL 发现 catalogsearch_result 的键 query_idproduct_id 重复,则 MySQL 引擎更新值 relevance = VALUES('relevance'); 而不是插入

【讨论】:

    猜你喜欢
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多