programing

알 수 없는 열 ''field list'에 ID가 있지만 목록에 열이 있습니다.

newsource 2022. 10. 27. 21:51

알 수 없는 열 ''field list'에 ID가 있지만 목록에 열이 있습니다.

오류:

알 수 없는 열 ''필드 리스트'의 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

데이터베이스에 관계없이 다음 코드가 있습니다.

                 (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보다는id.

다음과 같이 쿼리를 간소화할 수 있습니다.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') 

고든 리노프가 옳다. (- 나는 그의 대답을 받아들일 것이다), 나는 실수로 빠뜨렸다.wp_posts.ID서브쿼리부터요.해결책은 추가입니다.wp_posts.ID,하위 하위 쿼리의 SELECT 목록으로 이동하여 상위 하위 쿼리에서 선택할 수 있도록 합니다.

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

언급URL : https://stackoverflow.com/questions/54553492/unknown-column-id-in-field-list-but-the-column-is-in-the-list