2011-10-18 3 views
-1

이것이 작동하지 않는 이유를 모르겠습니다. 누군가 내가해야 할 일을 설명 할 수 있습니까?MySQL에서 WHERE IN 절에서 사용자 정의 변수를 사용하려면 어떻게해야합니까?

SET @my_list = '2,6,8,10,12,13,14,18,19,21'; 

DELETE FROM my_table WHERE my_table.table_id IN (@my_list); 
+0

가능한 중복 시도 할 수 [SQL로 패스 문자열을 WHERE IN] (http://stackoverflow.com/questions/6945223/pass-string-into-sql-where- in) –

답변

1
그것은 하나의 ID로 @my_list 해석이고 당신의 ID가 문자열 "2,6,8,10,12,13,14,18,19입니다 그래서 당신은 MY_TABLE에서 삭제를 요구하고

21 "

당신의

SET @my_list = '2,6,8,10,12,13,14,18,19,21'; 
SET @exec = CONCAT('DELETE FROM my_table WHERE my_table.table_id IN (', @my_list ,')'); 
EXECUTE (@exec); 
+0

답변 해 주셔서 감사합니다. my_list를 mysql이 이해할 수있는 실제 목록 유형으로 만드는 방법이 있나요? 그래서 나는 concat 일을 할 필요가 없을 것입니다. 난 그냥 같은 목록을 사용해야하는 삭제 쿼리 집합에 목록을 연결하고 싶습니다. 이것은 외래 키 관계를 가지고있는 테이블을 포함하고 있기 때문에 모두 같은 ID 목록을 제거해야하기 때문입니다. –

관련 문제