2017.09.03 23:01

디비에서 중복 값을 가지고 있는 필드를 조회하기위해 아래의 쿼리를 입력합니다.


SELECT * FROM `테이블명` GROUP BY 필드 HAVING COUNT(필드) > 1


이 값은 같은 필드가 2개 이상인 값을 보여줍니다.



예) SELECT * FROM `Coupon` GROUP BY Code HAVING COUNT(Code) > 1

신고
Posted by 그린블로그 DEV그린
2017.02.06 19:36

최근 csv 데이터를 디비로 옮겼는데 


이상한 공백값이 함께 저장되는 문제가 발생하였다.





SELECT * FROM Coupon WHERE Code LIKE '% %';


이런식으로 공백을 조회 후



UPDATE Coupon SET Code = REPLACE(Code, ' ', '')



해당 공백 값을 없애준다.

신고
Posted by 그린블로그 DEV그린
2016.05.30 03:16

예를 들어 A라는 테이블에 있는 값들중


한 아이디를 랜덤으로 불러와야 되는데 


만약 데이터를 5개 이상가지고 있지 않은 아이디를 불러올 경우 에러가 나게 되는 경우라면


아래의 쿼리로 요청하면 됩니다.




SELECT ID FROM A GROUP BY ID HAVING 5 < COUNT(ID) order by rand() limit 1


A 테이블에서 ID로 된 데이터가 5개 이상 가지고 있는 ID를 랜덤으로 1개 불러오는 것이죠.



신고
Posted by 그린블로그 DEV그린
2015.09.19 17:41

특정 컬럼의 중복값 제외는 매우 쉽습니다.


 SELECT Distinct A컬럼 from 테이블


이렇게만 해주면 중복된 값이 제거된 A컬럼의 열값만 나오죠.


그런데 날짜의 중복을 제거하고 싶다고 칩시다.


yyyyMMdd라면 괜찮습니다.


그런데 yyyyMMddHHmmss 라면?!


그럼 중복이 될 수가 없겠죠.


그럴 땐 substr을 씁니다. substring의 약자죠.


substr(컬럼값, 시작자리, 끝자리) 이런식으로 세팅합니다.


그런데 sqlite는 독특하게도 첫글자를 불러오려면 0이 아니라 1을 넣어야 합니다. 신기하죠? ^^


그럼 날짜를 불러오는데 시분초를 제외한 날짜중, 겹치는 날짜만 제거하여 쿼리를 날리면..


 SELECT Distinct substr(date,1,8) FROM report order by date desc


이렇게 하면 됩니다. ^^ order by는 보너스~


검색해보는데 이런 포스팅이 잘 없더라구요. 도움 되시길 바랍니다. ^^



신고
Posted by 그린블로그 DEV그린
2013.07.04 16:41

저번 글에선 Sqlite에서 NULL값을 걸러내는 방법을 알아보았는데요~


이번엔 NULL값을 제외한 값들을 추려내는 방법을 알아봅시다.


B테이블A컬럼의 값이 NULL이 아닌 것만 SELECT 하려면 아래와 같은 쿼리를 날립니다.


 SELECT A컬럼 FROM B테이블 WHERE NOT A컬럼 is NULL;


이것도 참~ 쉽죠? :)

신고
Posted by 그린블로그 DEV그린
2013.07.04 16:38

Sqlite에서 NULL값을 SELECT 해보는 방법을 알아봅시다.


B테이블A컬럼의 값이 NULL인 것만 SELECT 하려면 아래와 같은 쿼리를 날립니다.


SELECT A컬럼 FROM B테이블 WHERE A컬럼 is NULL;


참~ 쉽죠? :)

신고
Posted by 그린블로그 DEV그린
2012.03.22 10:47
select * 
from Tname 
where _id between '1' and '10'

테이블명 Tname 에서 _id의 값이 1~10인 값들을 조회한다.

update Tname
    set A = '1' 
where _id between '1' and '10'

테이블명 Tname 에서 _id의 값이 1~10인 값들의 컴럼 A의 값을 1로 바꾼다.
신고
Posted by 그린블로그 DEV그린
2011.11.07 13:43
http://sourceforge.net/projects/sqlitebrowser/files/latest/download?_test=goal

s
qlite 유틸리티입니다. 

앞서 소개한 sqlite export 보다 가벼운 프로그램입니다.

위의 경로로 가시면 받으실 수 있습니다. 

 
저작자 표시
신고
Posted by 그린블로그 DEV그린
2011.10.07 14:02

DISTINCT 

- SELECT 절에서 검색 결과중 데이터가 중복되지 않도록 중복되는 값들을 제거한 후 보여주는 역할을 하는 속성입니다.
DISTINCT와 반대되는 ALL이 있지만 ALL은 항상 DEFAULT 로 명시되어 있어 DISTINCT를 부여하지 않으면 항상 ALL 속성의 영향을 받습니다.



예문) SELECT
DISTINCT A FROM tableName WHERE B > 80;

tableName 테이블에서 A 컬럼의 데이터명이 중복되지 않으면서 B 컬럼의 값이 80 이상인 값들만 검색합니다.



그 밖의 옵션들

DISTINCT : 검색 결과중 중복되는 값 제거
CASCADE : 연관관계까지 함께 삭제(참조 중인것도 삭제)
RESTRICT : 참조중이면 삭제 하지 않음
HAVING : 반드시 GROPU BY와 사용
ORDER BY : 정렬
ASC : 오름차순(생략시 기본 오름차순)
DESC : 내림차순

저작자 표시
신고
Posted by 그린블로그 DEV그린
2011.09.29 12:56

String[] a = ["xxx", "yyy", "ttt"];


insert();


.

.

.


public void insert(){


for(int i=0; i<a.length(); i++){


String sql ="INSERT INTO tableName (a, b) VALUES("+a[i]+")";

db.setTransactionSuccessfull();

db.endTransaction();


}


}

신고
Posted by 그린블로그 DEV그린
2011.09.29 12:55

기억하세요! 갱신문은~ UPDATE-SET-WHERE ~!


UPDATE 테이블명 SET 열이름1=값1, 열이름2=값2... WHERE 조건


예제)


UPDATE tableName SET _id=1000 WHERE _id=7

//tableName 테이블의 _id 컬럼값 7번을 1000으로 바꿉니다.

신고
Posted by 그린블로그 DEV그린
2011.09.29 12:54

SELECT * FROM tableName WHERE _id BETWEEN 10 AND 30

//tableName 테이블에서 _id 컬럼의 값이 10 이상, 30 이하인 레코드를 검색합니다. (~와~사이)


SELECT * FROM tableName WHERE IN(10,30)

//tableName 테이블에서 _id 컬럼의 값이 10, 30인 레코드만 검색합니다. (안에)


SELECT * FROM tableName WHERE LIKE '%hi%'

//tableName 테이블에서 a 컬럼의 값이 hi 인 레코드만 검색합니다. (같은)



PS : 

세번째 LIKE '%hi%' 에서 %는 무엇일까요? 그것은 hi 좌우의 임의 문자에 상관없이 어디에든 hi만 들어가면 검색한다는 소리입니다.

예를 들면, a 컬럼의 값이 'high' 인데 위와 같이 '%hi%' 로 검색했을 때 a 컬럼이 출력되는 모습을 확인할 수 있을겁니다.


하지만 '%hi' 로 검색한다면 a 컬럼의 값은 검색되지 않을 것입니다. hi와 high는 다른 단어로 인식하기 때문입니다. 그것을 풀어주는 것이 %입니다. 마찬가지로 a 컬럼의 값이 'ahi' 인데 'hi%' 로 검색하면 hi 뒤에 있는 %가 뒤의 단어들은 무시해줄진 몰라도 앞에는 없기 때문에 hi와 ahi를 다른 단어로 인식하는 것입니다. 

신고
Posted by 그린블로그 DEV그린
2011.09.29 12:53

SELECT SUM(_id) FROM tableName;

// tableName 테이블에서 _id 컬럼의 데이터 합을 구합니다. (_id는 숫자)


SELECT AVG(_id) FROM tableName;

// tableName 테이블에서 _id 컬럼의 데이터의 평균을 구합니다.


SELECT COUNT(*FROM tableName;

//tableName 테이블의 개수를 셉니다. 즉, 행을 카운트합니다.


SELECT MAX(_id) FROM tableName;

//tableName 테이블에서 _id 컬럼의 데이터 중 최대값을 구합니다.


SELECT MIN(_id) FROM tableName;

//tableName 테이블에서 _id 컬럼의 데이터 중 최소값을 구합니다.




일단 예제를 들어 테이블 명이 tableName, 컬럼값이 _id 하나로 4개가 있다고 쳤을 때


SELECT * FROM tableName;


 _id

 1

 2

 3

 4 


여기서 


SELECT SUM(_id) FROM tableName;


하면 1+2+3+4 가 되서 


 _id

 10


이라는 결과가 나오겠지요. 나머지로 이런 맥락으로 생각하시면 됩니다. ^^

신고
Posted by 그린블로그 DEV그린
2011.09.29 12:50

SELECT * FROM 테이블명 WHERE 컬럼명 !='데이터값' 

//테이블명에서 특정 컬럼의 데이터 값을 조건연산자 != 로 추려낸 후 나머지 데이터들만 검색하는 쿼리입니다.

//데이터값이 숫자면 싱글쿼트 ''가 없어도 됩니다.


SELECT * FROM 테이블명 WHERE NOT 컬럼명 ='데이터값' 

//테이블명에서 특정 컬럼의 데이터 값을 논리연산자 NOT 으로 추려낸 후 나머지 데이터들만 검색하는 쿼리입니다.


SELECT * FROM 테이블명 WHERE 컬럼명 <>'데이터값' 

//테이블명에서 특정 컬럼의 데이터 값을 비교연산자 <>로 추려낸 후 나머지 데이터들만 검색하는 쿼리입니다.





예제)


INSERT INTO tableName (abVALUES ('how are you', 'fine thanks')

INSERT INTO tableName (abVALUES ('and you?''한국어로 해라')

//테이블명 tableName에 text 컬럼값인 'a'와 'b' 가 있을 때, 두 컬럼에 값을 집어넣고


SELECT * FROM tableName WHERE a != 'how are you'

//위와 같은 구문을 통해 검색하면 'how are you' 가 들어간 곳만 빼고 검색되는 것을 알 수 있습니다. 결과는 두번째 데이터만 검색될 것 입니다,

신고
Posted by 그린블로그 DEV그린
2011.09.29 12:49

DELETE FROM tableName WHERE _id=4


tableName 테이블의 컬럼값_id 4번을 지운다.

신고
Posted by 그린블로그 DEV그린
2011.09.29 12:48
SELECT _id, a, b FROM tableName WHERE a like '%a에 있는 데이타%' ORDER BY RANDOM() LIMIT 1

tableName이라는 이름을 가진 테이블에서 

-id, a, b 이렇게 3개의 컬럼을 검색하는데, 

검색어가 a의 데이타 인것 중에서 랜덤으로 1개만 가져오는 쿼리입니다.
신고
Posted by 그린블로그 DEV그린
2011.09.29 12:48

http://www.sqliteexpert.com/download.html


SQLLite Expert 유틸.


이클립스 - DDMS - File Explorer - data - data - 패키지명 - database 에서


지정한 테이블명.db 를 오른쪽 상단의 pull a file from the device 버튼을 눌러 내보낸 후


SQLLite Expert 로 불러오면 보기가 편합니다.

신고
Posted by 그린블로그 DEV그린