2017-08-02 54 views
0

我想运行一个查询,但我得到了上述错误。任何人都可以让我知道为什么我会得到它。#1241 - 操作数应该包含1列 - 为什么我得到这个?

UPDATE `catalog_eav_attribute` 
SET `used_for_sort_by` = 1 
WHERE attribute_id = (
SELECT * FROM `eav_attribute` WHERE `entity_type_id` = (SELECT `entity_type_id` FROM `eav_entity_type` WHERE `entity_model` = "catalog/product") AND `attribute_code` = "created_at"); 
+0

从您的WHERE子句中的第一子查询的选择列表,你要匹配它aganst一倍,即必须返回只有一列'attribute_id' – RiggsFolly

回答

3

您有attribute_id = (select * . . .。据推测,eav_attribute有多个列。

您需要指定特定的列,这样的事情:

UPDATE `catalog_eav_attribute` 
    SET `used_for_sort_by` = 1 
    WHERE attribute_id = (SELECT ea.attribute_id -- this is a guess 
          FROM `eav_attribute` ea 
          WHERE `entity_type_id` = (SELECT `entity_type_id` 
                FROM `eav_entity_type` 
                WHERE `entity_model` = 'catalog/product' 
                ) AND 
           `attribute_code` = 'created_at' 
         ); 
+0

这是绝对正确的!谢谢Gordon。 –

相关问题