저는 python 2.7.6과 sqlite 3.3.6을 사용하고 있습니다. INT 열이있는 테이블이 있습니다. 열 위에 max()
또는 min()
을 선택하면 행의 일부 난수가 반환되며 이는 최소 또는 최대 값이 아닙니다. 나는이 동작을 재현하려고 시도했다. 수동으로 테이블을 만들고 같은 값을 삽입했다. min과 max는 완벽하게 작동했다. 그러나, 내 스크립트 후, 수동 쿼리 테이블 이상한 결과를 다시 제공합니다. 여기 int 열의 이상한 최대 최소 결과
CREATE TABLE customer_score (DATE INT , SPAUBM INT , "CUSTOMER" TEXT, "SCORE" INT)
을 만드는 것입니다.
sqlite> select * from customer_score where customer='AAA' and date in (20140219);
20140219|9214|AAA|5017262
20140219|9213|AAA|3409363
20140219|9207|AAA|2288238
20140219|9208|AAA|809365
sqlite> select max(score) from customer_score where customer='AAA' and date in (20140219);
809365
sqlite> select min(score) from customer_score where customer='AAAL' and date in (20140219);
2288238
가 그 executemany 방법 나사 가입 INT 같을 수 여기
cursor.executemany("INSERT INTO customer_score VALUES (?, ?, ? , ?)", list_to_put)
은이 문제의 파일 테이블에
4203 6JASTYMPT 987335
예를 넣고, 행의 예는 어떻게 든 테이블에 삽입하기 전에 데이터?
어떻게 확인할 수 있습니까?
UPDATE
SQLite는 설명서 MIN()
MAX()
이 ORDER BY LIMIT 1
에 shorcut 것을 말한다. 제 경우에는 ORDER BY가 예상대로 작동하지 않습니다. 행 위치는 완전히 무작위로 보입니다.
sqlite> select * from customer_score where customer='AAA' and date in (20140218, 20140219) order by score desc ;
20140219|9208|AAA|809365
20140218|9208|AAA|629937
20140219|9214|AAA|5017262
20140218|9214|AAA|3911855
20140219|9213|AAA|3409363
20140219|9207|AAA|2288238
20140218|9213|AAA|2127092
20140218|9207|AAA|1489895
감사합니다! 나는 이것을 확인하지 않았다. 나는 INT 형식의 문자열 형식의 숫자로 sqlite를 피드하면 자동으로 INT로 변환되거나 예외를 throw합니다. 날짜에 대해서는 형식이 YYYYMMDD가 되 자마자 날짜를 숫자로 비교할 수 있습니다. 그 이유는 내가 INT로 유지하는 이유입니다. –