MySQL子查询错误:SQLSTATE [42S21]:

时间:2014-12-16 04:37:09

标签: php mysql yii

我正在使用Yii 1.1.15,并且在我的模型中使用scopes在我的查询中得到一个重复的列名称

function scopes () {
     return array(
          'isUsed'=> array(
                    'alias' => 'd',
                    'join' => 'JOIN `ads` v',
                    'condition'=>'d.is_new="0"',
                    //'group'=>'v.store_id'
            ),
     );
}

它会生成此查询

 SELECT COUNT(*) FROM (
        SELECT * FROM `store` d 
        JOIN `ads` v 
        WHERE ((d.pending!="1") AND (d.is_new="0")) AND (v.store_id IN (6))
    ) sq

Yii给我这个错误

CDbCommand failed to execute the SQL statement: SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'id'. The SQL statement executed was: SELECT COUNT(*) FROM (
        SELECT * FROM `store` d 
        JOIN `ads` v 
        WHERE ((d.pending!="1") AND (d.is_new="0")) AND (v.store_id IN (6))
    ) sq 

任何想法解决这个问题的人?感谢

1 个答案:

答案 0 :(得分:0)

这是因为您的子查询中的列不明确。
您应该在子查询中使用特定列名而不是*。

请参考以下示例:

SELECT COUNT(*) FROM (
        SELECT d.columnName,v.columnName,.... FROM `store` d 
        JOIN `ads` v 
        WHERE ((d.pending!="1") AND (d.is_new="0")) AND (v.store_id IN (6))
    ) sq