글
다음 데이터를 조건에 의해서 기대 결과로 나오게 하는 쿼리
데이터 : 1, 2, 2, 3, 3, 4, 5, 5, 5
기대 결과 : 5, 1,2, 2, 3, 3, 4
#1 union all을 쓰는 방법
select * from tableA where itemid = 3605255 and name like '%.exe' group by type
UNION ALL
select * from tableA where itemid = 3605255 and isHidden != 1 and name not like '%.exe';
UNION ALL 관련 페이지 : http://intomysql.blogspot.com/2011/01/union-union-all.html
UNION과 UNION ALL 의 차이 및 주의 사항
ANSI SQL에서 제안하는 집합 연산 "UNION", "INTERSECT", "MINUS" 중에서 MySQL에서는 UNION 집합 연산만 제공 하고 있다. (하지만 MySQL에서 INTERSECT나 MINUS를 다른 형태의 쿼리로 풀어서 사용할 수 ...
intomysql.blogspot.com
19.5.14 추가사항
#1-1union 이 포함된 쿼리문에 정렬을 넣으려고 할 때
a. union 각 쿼리에 정렬을 한 다음에 합치는 방법
Select * from ( %1) UNION ALL Select * from ( %2 )
%1, %2가 각 정렬이 적용된 쿼리를 넣어서 사용한다.
b. union으로 합친 결과 물에 정렬을 적용하는 방법
Select * from (%1 UNION ALL %2 ) %3
%3에 "order by ..."을 적용한다.
#2 sqlite의 rowid를 사용하는 방법
select * from ( SELECT name, CASE when name like '%.exe' THEN 0 ELSE ROWID END id FROM tableA where itemid = 3605255 )x group by x.id order by x.id ASC;
오라클은 가상의 sequencial한 id가 존재하고 이것으로 정렬 등에 사용한다.
sqlite도 유사하게 rowid란 가상의 sequencail한 id가 있어서 사용할 수 있다.
rowid 개념 관련 글 : https://ohgyun.com/698
sqlite: limit (오라클의 rownum 기능)
발생일: 2015.12.29 키워드: sqlite3, limit, oracle rownum 문제: sqllite 에서 오라클에서 제공하는 rownum 기능은 뭘까? 해결책: SQLite는 limit라는 기능을 제공한다. SELECT COL1, COL2 FROM TAB01 ORDER BY..
ohgyun.com
RECENT COMMENT