두 개의 테이블 간에 필드 값 일괄 업데이트 하기 문제테이블 Table_A 와 Table_B 가 있다.Table_A 의 pk가 3이상인 행에서 필드 field_a 는 Table_B의 field_b 값으로 업데이트되어야 한다. 해결join 으로 해결 UPDATE Table_A as A left outer join Table_B as B ON A.pk = B.pk SET A.field_a = B.field_b WHERE A.pk >= 3 참고복잡한 구조인 경우 조인을 이용한 셀렉트문으로 각 필드가 정상적으로 조회 되는지 확인을 우선하고 시행한다. SELECT A.field_a, B.field_b FROM Table_A as A left outer join Table_B as B ON A.pk = B.pk W..
Mysql 에서 HTML 태그 삭제 함수(strip_tags) delimiter || DROP FUNCTION IF EXISTS strip_tags|| CREATE FUNCTION strip_tags( x longtext) RETURNS longtext LANGUAGE SQL NOT DETERMINISTIC READS SQL DATA BEGIN DECLARE sstart INT UNSIGNED; DECLARE ends INT UNSIGNED; IF x IS NOT NULL THEN SET sstart = LOCATE('', x, sstart); SET x = CONCAT(SUBSTRING( x, 1 ,sstart -1) ,SUBSTRING(x, ends +1 )) ; SET sstart = LOCATE(..
오라클 등의 디비에서는 row_number()를 이용하여 행마다의 순번을 지정할 수 있으나mysql 에서는 해당 함수가 없다.대신 아래와 같은 방법을 이용할 수 있다. set @num:=0; select @num:=@num+1 as rownum, field1, field2 from {TABLE} [where]; num 이라는 변수를 생성 0으로 초기화 하여 행별값을 증가 시킨다.해당 변수는 DB 연결상태에서 계속 유지 되므로 다른 쿼리에서 사용시 초기화 해줘야 한다. select 쿼리문의 where 절에서도 초기화가 가능하다. select @num:=@num+1 as rownum, field1, field2 from {TABLE} where (@num:=0)=0 [where]; @http://stacko..
mysqldump --opt --default-char=utf8 -u user -p DB > backup.sqlmysqldump 시 Can't open file: './DB/table.frm' (errno: 24) when using LOCK TABLE라는 메시지가 나오면--lock-all-table 옵션추가 mysqldump --opt --default-char=utf8 --lock-all-table -u user -p DB > backup.sql
select table_schema as "DB_name", SUM(data_length+index_length)/1024/1024 as "Size(MB)" from information_schema.TABLES where table_schema = '[DBNAME]' GROUP BY table_schema