목록STUDY/DBMS (9)
Developer N
SELECT 1. 12세 이하인 여자 환자 목록 출력하기 내 답안) SELECT pt_name, pt_no, gend_cd, age, case when tlno is null then 'NONE' else tlno end as tlno from patient where age = 2 order by user_id, product_id desc 3. 오프라인/온라인 판매 데이터 통합하기 내 답안) SELECT date_format(sales_date, '%Y-%m-%d') as sales_date, product_id, user_id, sales_amount from online_sale where date_format(sales_date, '%Y-%m') = '2022-03' union select da..
GROUP_CONCAT() n개의 row로 결과가 출력되는 쿼리를 한줄의 row로 표현하고 싶을 때가 있다. 이때 GROUP_CONCAT을 사용하면 된다. 쿼리 : select userId from userInfo 결과 : userId aaa1 aaa1 ccc3 bbb2 위 쿼리의 결과가 표와 같다고 할 때 네개의 로우를 하나의 로우로 표현하고자 한다면 아래와 같이 쿼리를 작성하면 된다. 쿼리 : select GROUP_CONCAT(userId SEPARATOR '|') as userId from userInfo 결과 : userId aaa1|aaa1|ccc3|bbb2 위의 표처럼 하나의 row에 구분자를 기준으로 모든 row가 붙어서 출력된다. SEPARATOR을 사용하여 구분자를 원하는 대로 변경할 ..
Could not set parameter at position 1 (values was ~) : 스프링 MyBatis에서 발생하는 위 에러는 주석으로 #{파라미터}를 감쌌을 경우 발생한다. 해결 방법은 간단하다. 주석 내에서 해당 파라미터를 제외하거나 또는 주석을 풀어주면 된다. select * from person p where 1=1 and p.id = #{id} -- and p.age = #{age} -- #{파라미터}를 주석으로 감쌀 경우 -> 에러 발생 and p.name = #{name} -------------------------------------------- -- 해결방법 1 -> 주석 부분 삭제 select * from person p where 1=1 and p.id = #{id..
하나의 MyBatis 에서 여러개의 쿼리를 실행시키고 싶을 때가 있다. 이때 DB연결 부분에서 allowMultiQueries=true 를 붙여주면 된다. jdbc:mysql://localhost:3306/test?allowMultiQueries=true 아래는 이를 이용해 한번에 여러개의 insert 쿼리를 실행하는 MyBatis 코드다. insert into testTable2( id, seq, age, name ) select tt.id, pt.seq, #{age}, #{name} from testTable tt inner join personTable pt on pt.age = tt.age where tt.age = #{age} and tt.deleted_at is null order by pt...
iterate문 태그 ( ibatis : MyBatis의 옛 버전 ) property : 파라미터명 prepend : 쿼리로 쓰일 문자 open : 구문이 시작될 때 삽입할 문자열 close : 구문이 종료될 때 삽입할 문자열 conjunction : 반복되는 사이에 출력할 문자열 foreach문 태그 collection : 전달받은 인자. List or Array 형태만 가능 item : 전달받은 인자값을 alias명으로 대체 open : 구문이 시작될 때 삽입할 문자열 close : 구문이 종료될 때 삽입할 문자열 separator : 반복되는 사이에 출력할 문자열 index : 반복되는 구문 번호. 0부터 순차적으로 증가 update testTable set..