2010-07-14 7 views
-1
INSERT INTO 
product_search_table (id, score) 
VALUES (
SELECT product_id, 50 FROM cart_product WHERE product_id = 555 
) 

제게 오류가 있습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?이 쿼리에 잘못된 점이 있습니까?

555는 변수로 대체 될 것입니다.

+4

오류가 무엇입니까 : 예를 들어

? –

+0

내 영혼의 평화를 위해서 : 이것은 단지 최소화 된 예였습니까? 이 경우 하위 쿼리는 전혀 필요하지 않기 때문입니다. – Bobby

+0

@Bobby 알고리즘의 검색 결과가 포함 된 임시 테이블이 있습니다. 알고리즘은 제품 ID가 검색어와 일치하는지 확인하지 않습니다. 위의 코드에서 검색어가 제품의 제품 ID 인 경우 원래 테이블의 제품과 함께 임시 테이블을 삽입합니다. 관련성이 높은 점수 그 말이 맞는다면. –

답변

7

INSERT ... SELECT 쿼리에 대해 잘못된 구문을 사용하고 있습니다. 여기

은 제대로 할 줄 방법은 다음과 같습니다

INSERT INTO product_search_table (id, score) 
SELECT product_id, 50 FROM cart_product WHERE product_id = 555 

더 많은 정보 : MySQL 5.1 Reference: INSERT..SELECT Syntax

+0

우리 모두가 같은 페이지에 있다는 것을 알았습니다. :) – Faisal

5

은 선택보기 용의자 주위

INSERT INTO 
product_search_table (id, score) 
SELECT product_id, 50 FROM cart_product WHERE product_id = 555 
1

브래킷 시도 - 값을 수행한다. 시도 :

INSERT INTO product_search_table (id, score) 
SELECT product_id, 50 FROM cart_product WHERE product_id = 555 
1

사용 :

INSERT INTO product_search_table 
(id, score) 
SELECT product_id, 50 
    FROM cart_product 
WHERE product_id = 555 

INSERT 문에 SELECT 문을 사용하여, 당신은 VALUES 키워드를 사용하거나 괄호에 SELECT를 동봉하지 않습니다.

-1

내 생각 엔 서브 쿼리가 (이론적으로) 여러 행을 반환 할 수 있다는 것입니다. 그렇다면 여러 행이 단일 필드에 어떻게 맞을 수 있습니까? 쿼리 된 데이터가 스칼라 값인지 확인하려고 할 수 있습니다.

(두 번째 필드/50 값에 대해서는 너무 확신하지 못합니다.)

편집 : VALUES는 insert statements people에 사용됩니다. this page

edit2 : 첫 번째 열에 대한 데이터 만 선택하고 두 번째 열에 대한 데이터는 어디에 있습니까?

+0

VALUES는 때때로 INSERT에 사용되지만,이 경우에는 사용되지 않습니다. –

1

VALUES로는이를 수행 할 수 없습니다.

INSERT INTO 
product_search_table (id, score) 
SELECT product_id,50 FROM cart_product WHERE product_id = 555 
관련 문제