0

是一种比较同一张表中的两条记录的方法吗?我已经比较了两张表,以确保我的记录准确无误

SELECT * 
FROM `catalog_category_entity_varchar` c2t
WHERE NOT EXISTS (
    SELECT * 
    FROM `core_url_rewrite` c 
    WHERE c.category_id = c2t.entity_id
)

现在我正在尝试比较 catalog_category_entity_varchar 中的记录是否存在任何不一致。这是我的两条记录的示例。

catalog_category_entity_varchar:

记录 1:
value_id:68
entity_type_id:3
attribute_id:43
store_id:0
entity_id:10
value:shop-by

记录2:
value_id:73
entity_type_id:3
attribute_id:57
store_id:0
entity_id:10
value:shop-by.html

entity_id 是唯一标识符。我必须将 url 键的值(attribute_id = 43)与 url 的值(attribute_id 57)进行比较。我假设我必须在之后使用通配符 %,这将删除 .html,另一个之前,这将删除部分任何 2 级以上类别 url 上的 url(例如 catalog/shirts/shop-by.html)。

如果它更容易我可以复制表和我的初始比较语句,我只需要知道如何修改查询以匹配属性 ID 并使用通配符。

4

1 回答 1

0

我不确定这会做你想做的所有事情,但我认为这可能是朝着正确方向迈出的一步。它将具有 43 属性的记录与 57 属性进行比较,并查看 43 记录的值字段是否不在 57 记录的值字段中。

SELECT  *

FROM    catalog_category_entity_varchar t1

        JOIN catalog_category_entity_varchar t2
        ON t1.entity_id = t2.entity_id
        AND t2.attribute_id = 57

WHERE   t1.attribute_id = 43
        AND INSTR(t2.value, t1.value) = 0;
于 2013-08-17T00:46:39.297 回答