2013-04-28 79 views
0

我當前使用SELECT PDO,但我有此錯誤消息SQLSTATE [23000]:完整性約束違規:1062重複項 'XXXX' 關鍵 'group_key'

 
SELECT a.*, UNIX_TIMESTAMP(a.createdon) AS timestamp, ct.cityname, ct.SeoCityName, scat.subcatname, scat.SeoSubcatName, 
       COUNT(*) AS piccount, p.picfile, UNIX_TIMESTAMP(feat.featuredtill) AS featuredtill 
      FROM prefix_ads a 
       INNER JOIN prefix_cities ct ON a.cityid = ct.cityid 
      INNER JOIN prefix_subcats scat ON a.subcatid = scat.subcatid 
      LEFT OUTER JOIN prefix_adxfields axf ON a.adid = axf.adid 
       LEFT OUTER JOIN prefix_adpics p ON a.adid = p.adid AND p.isevent = '0'   
       LEFT OUTER JOIN prefix_featured feat ON a.adid = feat.adid AND feat.adtype = 'A'   
      WHERE a.catid = '10' 
       AND a.enabled = '1' AND a.verified = '1' AND a.expireson >= NOW() 
      GROUP BY a.adid 
      ORDER BY a.createdon DESC 
      LIMIT 0, 18 

SQLSTATE [23000]:誠信約束衝突:1062重複項「XXXX」關鍵「group_key」

XXXX =曾經是,如果上市

可以有人請幫助?

EXPLAIN

 
Array 
(
    [id] => 1 
    [0] => 1 
    [select_type] => SIMPLE 
    [1] => SIMPLE 
    [table] => scat 
    [2] => scat 
    [type] => ALL 
    [3] => ALL 
    [possible_keys] => PRIMARY 
    [4] => PRIMARY 
    [key] => 
    [5] => 
    [key_len] => 
    [6] => 
    [ref] => 
    [7] => 
    [rows] => 152 
    [8] => 152 
    [filtered] => 100.00 
    [9] => 100.00 
    [Extra] => Using temporary; Using filesort 
    [10] => Using temporary; Using filesort 
) 
Array 
(
    [id] => 1 
    [0] => 1 
    [select_type] => SIMPLE 
    [1] => SIMPLE 
    [table] => a 
    [2] => a 
    [type] => ref 
    [3] => ref 
    [possible_keys] => subcatid,cityid,verified,enabled,expireson,catid,ct_ads 
    [4] => subcatid,cityid,verified,enabled,expireson,catid,ct_ads 
    [key] => subcatid 
    [5] => subcatid 
    [key_len] => 2 
    [6] => 2 
    [ref] => DB.scat.subcatid 
    [7] => DB.scat.subcatid 
    [rows] => 150 
    [8] => 150 
    [filtered] => 100.00 
    [9] => 100.00 
    [Extra] => Using where 
    [10] => Using where 
) 
Array 
(
    [id] => 1 
    [0] => 1 
    [select_type] => SIMPLE 
    [1] => SIMPLE 
    [table] => ct 
    [2] => ct 
    [type] => eq_ref 
    [3] => eq_ref 
    [possible_keys] => PRIMARY 
    [4] => PRIMARY 
    [key] => PRIMARY 
    [5] => PRIMARY 
    [key_len] => 2 
    [6] => 2 
    [ref] => DB.a.cityid 
    [7] => DB.a.cityid 
    [rows] => 1 
    [8] => 1 
    [filtered] => 100.00 
    [9] => 100.00 
    [Extra] => 
    [10] => 
) 
Array 
(
    [id] => 1 
    [0] => 1 
    [select_type] => SIMPLE 
    [1] => SIMPLE 
    [table] => axf 
    [2] => axf 
    [type] => ref 
    [3] => ref 
    [possible_keys] => adid 
    [4] => adid 
    [key] => adid 
    [5] => adid 
    [key_len] => 4 
    [6] => 4 
    [ref] => DB.a.adid 
    [7] => DB.a.adid 
    [rows] => 1 
    [8] => 1 
    [filtered] => 100.00 
    [9] => 100.00 
    [Extra] => Using index 
    [10] => Using index 
) 
Array 
(
    [id] => 1 
    [0] => 1 
    [select_type] => SIMPLE 
    [1] => SIMPLE 
    [table] => p 
    [2] => p 
    [type] => ref 
    [3] => ref 
    [possible_keys] => adid 
    [4] => adid 
    [key] => adid 
    [5] => adid 
    [key_len] => 5 
    [6] => 5 
    [ref] => DB.a.adid,const 
    [7] => DB.a.adid,const 
    [rows] => 1 
    [8] => 1 
    [filtered] => 100.00 
    [9] => 100.00 
    [Extra] => 
    [10] => 
) 
Array 
(
    [id] => 1 
    [0] => 1 
    [select_type] => SIMPLE 
    [1] => SIMPLE 
    [table] => feat 
    [2] => feat 
    [type] => eq_ref 
    [3] => eq_ref 
    [possible_keys] => adid 
    [4] => adid 
    [key] => adid 
    [5] => adid 
    [key_len] => 7 
    [6] => 7 
    [ref] => DB.a.adid,const 
    [7] => DB.a.adid,const 
    [rows] => 1 
    [8] => 1 
    [filtered] => 100.00 
    [9] => 100.00 
    [Extra] => 
    [10] => 
) 
 
id select_type  table type possible_keys key  key_len  ref  rows Extra 
1 SIMPLE scat ALL  PRIMARY  NULL NULL NULL 152  Using temporary; Using filesort 
1 SIMPLE a ref  subcatid,cityid,verified,enabled,expireson,catid,c... subcatid 2 DB.scat.subcatid 150  Using where 
1 SIMPLE ct eq_ref PRIMARY  PRIMARY  2 DB.a.cityid  1 
1 SIMPLE axf  ref  adid adid 4 DB.a.adid 1 Using index 
1 SIMPLE p ref  adid adid 5 DB.a.adid,const  1 
1 SIMPLE feat eq_ref adid adid 7 DB.a.adid,const  1 

問候 摹

+0

我沒有看到任何插入或更新 – 2013-04-28 23:54:01

+0

是的,有沒有插入或更新,但我在我的網站有這個問題。這就是我要求你的專家幫忙的原因。 – 2013-04-29 07:37:08

回答

0

您的查詢是不正確的。
你不應該正確使用那麼多的選擇字段和組。

例如:

SELECT                         
    UNIX_TIMESTAMP(a.createdon) AS timestamp,                
    ct.cityname,                        
    ct.SeoCityName,                       
    scat.subcatname,                       
    scat.SeoSubcatName,                      
    p.picfile,                        
    UNIX_TIMESTAMP(feat.featuredtill) AS featuredtill,              
    COUNT(*) AS piccount                      
FROM                          
    prefix_ads a                       
    INNER JOIN prefix_cities ct ON a.cityid = ct.cityid          
    INNER JOIN prefix_subcats scat ON a.subcatid = scat.subcatid         
    LEFT OUTER JOIN prefix_adxfields axf ON a.adid = axf.adid          
    LEFT OUTER JOIN prefix_adpics p ON a.adid = p.adid AND p.isevent = '0'     
    LEFT OUTER JOIN prefix_featured feat ON a.adid = feat.adid AND feat.adtype = 'A'   
WHERE 
    a.catid = '10'                   
    AND a.enabled = '1' 
    AND a.verified = '1' 
    AND a.expireson >= NOW()       
GROUP BY 
    1,2,3,4,5,6,7                    
ORDER BY 
    a.createdon DESC                 
LIMIT 0, 18 

由於計數器是一組功能,它不走'GROUP BY子句

相關問題