우선 오라클 having 에 관해 살펴보면 select empfrom EMPgroup by emphaving count(*) > 1; 이러면 emp가 2건 이상인것 만 출력된다. 이것에 이어서 중복건 중 1건만 남기고 싶을 때가 있다. ROW마다 있는 ROWID를 이용해 중복건 삭제하는 방법을 살펴보자. select emp,count(*) over (partition by emp) as cntfrom 테이블명 하면 전체 ROW에 대한 중복 갯수가 출력된다. select a.* from(select emp,count(*) over (partition by emp) as cnt,rowid,row_number() over(partition by emp order by emp desc) rnfrom 테이블명or..
오라클 쿼리를 실행하던 중ora-00001: unique constraint(xxx_pk) violated에러가 발생했다. 역시 오라클에서도 unique 한 키가 가장 중요하다고 생각해서 인지 1번으로 에러를 표시한 듯 하다. 중복건이 들어가야 되서 PK를 없애주기로 했다. desc 해서 살펴보면 create unique index table_pkon TABLE(EMP ASC); 이런식으로 설정되어 있었다. 저걸 삭제 하면 ALTER TABLE TABLE명 DROP CONSTRAINT PK명; 오너명이 있다면 alter table 오너명.테이블명 drop constraint pk명; 뒤에 pk명에는 오너명이 안들어 간다. 라고 했는데 안됐다.. ㅎㅎ 이유는 PK가 아니고 unique index 였기 때문..
데이터가 아래와 같이 있습니다. 테이블 명 : xx_order SEQ ID ORDER_DT 1 AAA 2008.09.01 2 BBB 2005.01.20 3 AAA 2009.02.11 4 CCC 2002.07.12 5 AAA 2006.02.03 6 BBB 2009.10.20 7 BBB 2009.12.11 8 CCC 2003.09.09 9 CCC 2008.03.01 위 데이터에서 결과값을 아래와 같이 추출하려면 어떻게 하면 좋을까요. AAA 2009.02.11 BBB 2009.12.11 CCC 2008.03.01 제 얕은 지식으로는 Group by 한 다음에 추가로 뭔가 해야 될것 같긴 합니다만. 아시는 분들 답변 부탁 드립니다. 답변 select a.id, a.order_dt from ( select se..
select insert 쿼리 사용 시 ora-00913: too many values 에러가 났다. 머 어떤일이 든지 습관이 중요하지만 프로그램쪽에서도 습관이 중요한것 같다. select insert 쿼리를 처음 배울때 그냥 insert into test select * from ttest; 이런식으로 배우고 사용했더니 문제가 생겼다. select 에 있는 컬럼이 늘어나면 오류가 나는 것이였다. 그래서 insert 문에서도 컬럼명을 전부다 써주는게 좋다. 그냥 코딩 습관을 컬럼명를 다 쓰는 습관을 들이는게 좋을것 같다. 귀찮을 수도 있는데... 장애처리 하는것보다 나을듯... 그래서 결론은 insert into test ( a ,b ,c ,d ) select a ,b ,c ,d from ttest 이런..
* MSSQL * UPDATE table_a SET table_a.column_a = table_b.column_b FROM table_a, table_b, WHERE table_a.userid = table_b.userid * 오라클 * UPDATE table_a SET column_a = column_b WHERE userid IN (SELECT userid FROM b) UPDATE table_a SET (column_1, column__2) = (SELECT column_a, column_b FROM table_b WHERE join_column_1 = table_a.join_column_a); UPDATE table_a SET column_1 = (SELECT COLUMN FROM table_b..
과거에 컬럼 1개를 where절에서 select해서 삭제했었다. 즉, delete from userwhere user_id in (select user_id from user2 where aa='aa'); 이런식으로 .. 그런데 컬럼값 2개를 이용해서 값을 삭제해야할 일이 생겼다. 흠.. 어떻게 해야하지.. 결론은 간단하였다. 그냥 컬럼을 1개 더 써주고 괄호로 감싸주면 되는거였다. 즉, delete from userwhere (user_id, user_nm) in (select user_id, user_nm from user2 where aa='aa');
merge into 를 써서 쿼리문을 만들었는데 ora-00926: missing VALUES keyword 에러가 났다. 흠.. 이상하네.. 잘 못 쓴데가 없는거 같은데.. 하면서 한참을 봐도 모르겠다.. 결국에는 INSERT INTO 라고 쓴부분을 INSERT 만 써야 됐었다. 습관처럼 INSERT INTO 라고 했더니.. merge intoonwhen matched thenupdate setwhen not matched theninsert()values() insert into가 아니고 insert 다.
insert 쿼리를 하다 보면 필드 갯수가 많아지면 정신 없다. 나름 신경써서 컬럼명과 values 부분을 잘 한다고 했는데 그럼에도 불구하고 ORA-00947: not enough values 위와 같은 에러가 났다. 뭐지... 하고 찾아보니 INSERT문에서 ()안에 COLUMN명들을 적는데 그 COLUMN명과 뒤에 VALUES()안의 값들의 수가 일치하지 않아서 나는 에러였다. 그래서 다시 한번 천천히 살펴보니 아니나 다를까 컬럼명 쓰는 부분에서 한개를 빠뜨렸다..
DB 테이블을 다룰 때, 특정 조건의 데이터가 존재하는 경우에는 해당 row를 원하는 값으로 update하고, 없는 경우에는 새로운 데이터를 insert를 해야하는 경우가 왕왕 있습니다. 이럴 때 보통은 select 쿼리를 먼저해보고 데이터가 있는지 없는지 판단을 해서 update를 할 지 insert를 할 지 분기해서 처리했었는데요. oracle에서 MERGE INTO라는 구문을 쓰면 하나의 쿼리로 두가지 경우에 모두 대처할 수 있습니다. 아래와 같이 쓰면 됩니다. table을 지정했기 때문에 MATCHED, NOT MATCHED 이하에 update문과 insert문에 table_name은 생략됩니다. MERGE INTO table_name alias USING (table | view | subque..
- Total
- Today
- Yesterday
- C언어
- 문자열
- C
- 포인터
- 파이썬
- XE3
- xe addon
- ocpjp
- 이클립스
- EC
- xe애드온
- 자바 smtp
- webix
- Python
- XE
- 인포믹스
- 오라클
- 파싱
- 자바 셀레니움
- proc
- ocajp
- 프로씨
- MySQL
- ocjap
- 자바
- php
- JDBC
- 스크래핑
- esql
- KG
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |