글
다음 데이터를 조건에 의해서 기대 결과로 나오게 하는 쿼리
데이터 : 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
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
RECENT COMMENT