2012-11-09 4 views
2

다음과 같은 문제가 있습니다. 나중에 우리가 modified_name라는 새 열을 추가 어느 시점에서열 입력에 따라 동적으로 행을 업데이트하십시오.

id int(10), 
name varchar(100), 

: 나는 다음과 같은 구조로 titles라는 테이블이 있습니다. name과 동일하게 정의되며 소문자이며 모든 공백은 -으로 바뀝니다. 이 열을 추가 했으므로 이제 해당 열의 각 레코드에 올바른 수정 된 이름 값을 가져와야했습니다. 이를 위해 데이터베이스에서 값을로드하고 처리하여 PHP 스크립트를 작성했지만 매우 비효율적 인 PHP 스크립트를 작성했습니다. titles 테이블의 각 레코드에 올바른 값을 추가하는 단일 UPDATE 쿼리를 작성할 수 있습니까? 저장 프로 시저와 while 루프를 사용하여이 작업을 수행하는 방법을 생각할 수 있지만 더 효율적인 것이 가능한지 알고 싶습니다. 그것은 거기에 뭔가를 달성 할 수있는 방법 다음

UPDATE `titles` 
    SET 
`modified_name` = LOWER(REPLACE(SELECT `name` FROM `titles` WHERE id = PRESENT_VALUE), ' ', '-'); 

목표는 다음과 같이 해당 레코드의 name 열에서 발생 고유 한 값으로 titles 테이블에있는 모든 레코드의 modified_title 열을 설정하는 것 :

# Before modification update query 
name = "Hello Goodbye" 
modified_name = ""  

# After modification update 
name = "Hello Goodbye" 
modified_name = "hello-goodbye" 

도움을 주셔서 감사합니다. 최선을 다하는 방법에 대한 조언을 주시면 감사하겠습니다.

답변

1
UPDATE `titles` SET `modified_name` = LOWER(REPLACE(`name`, ' ', '-')) 
+0

와우, 완벽하게 작동했습니다. 그 종류의 조작이 가능하다는 것을 나는 몰랐다. 이것은 분명히 나에게 많은 도움이 될 것입니다. 고맙습니다. – usumoio

관련 문제