정렬 순서가 2, 3, 1, 4 이 순으로 되길 바랍니다. SELECT * FROM #table ORDER BY FIELD(`parent`, 2, 3, 1, 4) MySQL 내장 함수인 FIELD를 사용하시면 됩니다. FIELD(정렬 기준인 칼럼명, 값1, 값2, 값3, 값4)
parent가 1이면서 1000 초과일 경우 1 parent가 2이면서 1000 초과일 경우 2 나머지는 그냥 정렬 SELECT * FROM #table ORDER BY CASE WHEN (`parent` = 1 AND `cost` > 1000) THEN 1 WHEN (`parent` = 2 AND `cost` > 1000) THEN 2 END DESC
pno : project 테이블의 no mno : member 테이블의 no 클라이언트가 이런 요구를 했습니다. 프로젝트별로 정렬을 하되 여기에서 글을 쓴 사람이 있는 값부터 우선 정렬을 하고 없는 사람들은 그냥 no를 기준으로 정렬을 하라고... 21 / 5532 3 / 8026 20 / 8127 1 / 8155 4 / 0 5 / 0 ... 생략 ... 그러면 결과는 위와 같겠네요. 보통은 `pno` DESC, `mno` ASC 이런 식으로 하면 되겠지만 칼럼 값이 0인 애들이 있습니다. 내림차순이면 상관이 없는데 하필이면 오름차순이네요. 그러면 0인 애들이 제일 상단에 가게 됩니다. mno 칼럼 값이 0인 애들은 1000000000 이 값을 넣어 버리고 no 칼럼을 기준으로 정렬을 하면 됩니다. SE..
칼럼 하나에서 여러 단어로 검색할 때 LIKE를 여러 번 써야 하는 수가 있습니다. SELECT * FROM #table WHERE `column` LIKE '%aaa%' OR `column` LIKE '%bbb%` OR `column` LIKE `%ccc%' 너무 무식하게 길어집니다. 이런 때 REGEXP 연산자를 써서 SELECT * FROM #table WHERE `column` REGEXP 'aaa|bbb|ccc' 이렇게 줄여서 쓰면 됩니다. 반대의 경우도 있습니다. 칼럼 여러 개에 하나의 단어로 검색할 때입니다. 이런 때는 아래처럼 쿼리를 씁니다. SELECT * FROM #table WHERE `column1` LIKE '%aaa%' OR `column2` LIKE '%aaa%` OR `col..