Go SQL에서 order by를 능동적으로 하기

정렬을… 내 마음대로 하고 싶을 수도 있잖아?

Go로 웹 서버를 짜던 중, 관리자 인터페이스를 만들 필요가 있었다. 만들기는 귀찮았지만 말이다. 그래도 유저가 있는 웹사이트라면, 제대로 된 관리자 인터페이스 쯤은 있어야하지 않나?

유저 전체 목록을 보여주는 페이지를 만들 차례였는데, 정렬을 id가 아니라, 이름, 가입 날짜 등으로 정렬을 할 수 있어야 했다. 그래서 폼을 하나 만들고 폼에다가 필드 이름을 입력받고, 서버에서

1
db.Prepare("select username, age... from users order by $1")

라는 코드를 작성했다. $1은 필드에서 입력받은 값이다. 실행은 잘 됐다. 문제는 정렬이 능동적으로 되지 않고 무조건 PK로만 되었다. 내 구문이 문제인가 라고 생각하고 $1age로 변경했더니 나이로 정렬된 유저 목록이 나왔다.

알고 보니, SQL 구문이나 Identifier에는 $1 등의 플레이스홀더를 사용할 수 없었다. fmt.Sprintf 등을 거쳐야 한다고. 단계만 더 늘어났다.

댓글을 불러올까요?