[MySQL] 중복된 항목 갯수 카운트

MySQL 2017. 10. 24. 17:43




중복된 항목 갯수 카운트


 SQL> SELECT video_id, COUNT(*) FROM youtube_swing GROUP BY video_id HAVING COUNT(*) > 1; 


동일한 비디오 아이디(video_id)의 중복된 ROW개수가 몇개인지 파아악하기 위한 쿼리




[MySQL] FIELD를 사용한 ORDER BY 정렬 순서 강제 지정

MySQL 2016. 12. 23. 09:42










■ FIELD를 사용한 ORDER BY 정렬 순서 강제 지정




기본적으로 ORDER BY는 ASC, DESC 형태로 DB를 정렬하여 주지만.


상황에 따라. 1, 2, 3, 4, 5의 순서가 아닌


3, 5, 1, 4, 2의 순서로 나타내야 하거나.


정렬 순서가 문자로 구분되어질 필요가 있는경우 FIELD를 사용하는데


사용방법은 아래와 같다.





위와 같은 방법으로 아래와 같이 데이터를 불러오면


 SQL > SELECT title, zone FROM test_table
         ORDER BY FIELD(zone, 'wg', 'ap', 'at', 'ag', 'tc', 'tw', 'ac', 'ht') ASC;



그럼 아래와 같이 위에서 지정한대로 wg부터 ~ ht의 순으로 출력되는 모습을 확인 할 수 있다.










[MySQL] Field '칼럼' doesn't have a default value 에러

MySQL 2016. 10. 19. 19:57





[MySQL] Field '칼럼' doesn't have a default value 에러




이번 에러는 서버 이전때문에 MySQL 버전업을 하고 테스트중 발생한 에러이다.


처음에는 서버 설정이 다르거나 MySQL 버전이 다름으로서 발생한 에러인줄알고 좀 해맸지만.


찾아보니 원인은 굉장히 간단했다.


해당 테이블에 INSERT, UPDATE중 해당 컬럼의 값이 들어가지 않기 때문에 발생한 에러로서.


해결방법은 컬럼 속성을 NOT NULL에서 NULL로 변경함으로서 해결 할 수 있었다.



SQL>


 ALTER TABLE [테이블 명] MODIFY [컬럼 명] [변경할 컬럼타입];


 ALTER TABLE table_name MODIFY column_name NULL;



이렇게 변경해둠으로서 해당 컬럼을 업데이트 및 수정하는 경우 발생하는 문제를 해결 할 수 있었다.






[MySQL] 사용자 변수

MySQL 2015. 10. 21. 15:16

참고 : http://link2me.tistory.com/536



MySQL을 사용하다 보면, auto increment을 통해 값을 자동 증가 시키지 않은 테이블을 만나게 된다.


물론 코드상에서 for, while문등에서 변수를 계속 증가시켜 뿌려줄 수도 있겠지만.


MySQL에서도 변수를 증가 시킬 수 있는 방법이 있어서 정리한다.



01. MySQL에서의 사용자 변수
 -. MySQL에서 하나의 명령문에 있는 값을 다른 명령문으로 전달하는 것이 가능하다.
 -. 사용자 정의 변수에 값을 저장한 후에 나중에 그 값을 참조할 수 있다.
 -. 한 클라이언트에서 정의된 사용자 변수는 다른 클라이언트에서는 보이지 않으며 사용할 수 없다.
 -. 해당 커넥션에서 정의된 모든 변수는 클라이언트가 종료되면 자동으로 해제된다.


02. MySQL 사용자 변수 값 할당 방법
 -. SET @var_name = expr  (정수, 실수, 문자열, NULL) SET 변수할당은 = 또는 := 둘다 사용 가능하다.
 -. 비 SET 문에서는 := 로 할당한다. = 는 비교 연산자로 취급되기 때문이다.
 -. 여러개의 변수를 선언할때는 DECLARE @ 변수명 자료형, @변수명 자료형과 같은 방법으로 계속 적어주면 된다.
 -. SELECT 문의 가장 기본은 SELECT/FROM/WHERE이다.
 -. 복잡한 쿼리문을 작성할 때도 SELECT/FROM/WHERE를 작성하고 나머지 부분을 채우는 것이 좋다.




 SET(사용자 변수)과 함께 쿼리를 실행한 첫번째 경우

 SET @rownum = 0;
 SELECT (@rownum := @rownum + 1) AS num, end_date, m_id, create_date FROM academy_coupon3 LIMIT 10;

 출력결과


위의 예제를 살펴보면 num이라는 컬럼이 추가되고.


그 값이 계속 증가하여 보여주는것을 알 수 있다.


이렇게 변수가 한번 생성되면 해당변수는 클라이언트를 종료할때 까지 계속 유지가 되는데.


아래처럼 확인을 할 수 가 있다.



 SET(사용자 변수)을 사용하지 않고 위의 쿼리만 실행한 두번째 경우

 SELECT (@rownum := @rownum + 1) AS num, end_date, m_id, create_date FROM academy_coupon3 LIMIT 10;
 출력결과


위 내용을 보면 num의 값이 11부터 시작되는것을 확인할 수 있기에.


클라이언트가 종료되기까지 계속 사용이 가능하다.


만약 클라이언트를 종료하고 다시 쿼리를 실행한다면.



 클라이언트를 종료, 재실행 후 SET(사용자 변수)을 지정하지 않고 쿼리만 실행한세번째 경우

 SELECT (@rownum := @rownum + 1) AS num, end_date, m_id, create_date FROM academy_coupon3 LIMIT 10;
 출력결과


위의 이미지 처럼 num 컬럼의 값들이 전부 null로 표기되는 것을 알 수 있다.





[MySQL] MySQL 한글 깨짐

MySQL 2014. 6. 17. 01:26

에러. MySQL에서 INSERT문을 실행하고 SELECT문을 실행하였을 때



---- 해 결 방 법 ----




01. cmd 창에서 mysql 을 실행하고 아래 명령어를 실행한다.

 mysql> status





02. 아래와 같이 characterset이 latin1 로 설정되 있는 것을 확인 할 수 있다.






03. MySQL 설치경로(../MySQL/MySQL Server 5.5)의 my.ini 파일을 Text편집기로 실행한다.






04. my.ini 파일중에서 latin1 이라고 설정된 부분이 존재한다면 아래와 같이 전부 utf8로 변경한다.





05. mysql을 재실행 하면 characterset 부분이 전부 utf8로 변경되어 있음을 확인 할수 있다.




06. 이제 다시 데이터를 INSERT 하고 SELECT 하면 정상적으로 한글 데이터가 입력되어 있음을 확인 할 수 있다.