代码之家  ›  专栏  ›  技术社区  ›  ptrcao

“字段列表”中的未知列“ID”,但该列在列表中

  •  1
  • ptrcao  · 技术社区  · 6 年前

    错误:

    “字段列表”中的未知列“ID”

    ID 柱下的柱子 wp_posts 表:

    create table wp_posts (
      ID integer primary key auto_increment,
      post_title varchar(30),
      post_type varchar(30)
    );
    
    
    create table wp_postmeta (
      ID integer primary key auto_increment,
      post_id integer,
      meta_key varchar(30) not null default '_regular_price',
      meta_value integer not null
    );
    

    产生错误的查询:

    DELETE FROM wp_posts 
    WHERE  id IN (SELECT id 
                  FROM   (SELECT id, 
                                 post_title, 
                                 post_type, 
                                 meta_value 
                          FROM   (SELECT wp_postmeta.post_id, 
                                         post_title, 
                                         post_type, 
                                         meta_value, 
                                         Row_number() 
                                           OVER( 
                                             partition BY post_title 
                                             ORDER BY wp_postmeta.meta_value) rn 
                                  FROM   wp_postmeta 
                                         JOIN wp_posts 
                                           ON wp_postmeta.post_id = wp_posts.id 
                                  WHERE  wp_posts.post_type = 'Product' 
                                         AND wp_postmeta.meta_key = '_regular_price' 
                                 ) t 
                          WHERE  t.rn <> 1) AS aliasx); 
    
    ) t where t.rn <> 1
    ) AS aliasx
    );
    

    dbfiddle here

    3 回复  |  直到 6 年前
        1
  •  3
  •   Gordon Linoff    6 年前

                     (SELECT id, 
                             post_title, 
                             post_type, 
                             meta_value 
                      FROM   (SELECT wp_postmeta.post_id, 
                                     post_title, 
                                     post_type, 
                                     meta_value, 
                                     Row_number() 
                                       OVER( 
                                         partition BY post_title 
                                         ORDER BY wp_postmeta.meta_value) rn 
    

    没有 id 在子查询中。想必你是有意的 post_id 身份证件 .

        2
  •  1
  •   PSK    6 年前

    您可以使用 EXISTS

    DELETE wp 
    FROM   wp_posts wp 
    WHERE  EXISTS (SELECT 1 
                   FROM   wp_postmeta md 
                   WHERE  md.post_id = wp.id 
                          AND wp.post_type = 'Product' 
                          AND md.meta_key = '_regular_price') 
    
        3
  •  0
  •   ptrcao    6 年前

    wp_posts.ID 从子查询。解决方法是添加 wp_posts.ID, 要在低阶子查询中选择列表,以便在高阶子查询中选择它,请执行以下操作:

    (SELECT wp_posts.ID, wp_postmeta.post_id,post_title,post_type ,meta_value,