2009-08-20 6 views
9

karma_up 및 karma_down이있는 테이블이 있다고 가정 해 봅시다. 누군가가 투표를 할 때마다 karma_up이 증가하고 누군가 karma_down이 투표 할 때마다 하나씩 증가합니다. 이 행들을 선택하여이 새로운 값의 합계로 정렬하도록하려면 어떻게해야합니까? ORDER BY (karma_up - karma_down)는 내가 원하는 방식으로 작동하지 않는 것 같습니다. 나는 단순히 가장 높은 업장이있는 행을 맨 위로 올리고 싶습니다.두 개 필드 합계

SELECT 
ID, KARMA_UP, KARMA_DOWN, (KARMA_UP-KARMA_DOWN) AS USER_KARMA 
FROM KARMA 
ORDER BY USER_KARMA DESC 
+0

이 질문의 최종 결과는 SELECT *, CAST했다 내 부정적인 카르마 값에 대해 매우 큰 숫자를 얻습니다. 이것은 내 karma_up 및 karma_down 필드의 서명을 취소하지만 CAST()가 솔루션이었습니다. 고마워요! –

답변

19

이 일을합니까? 그렇지 않다면 질문에 결과를 포함시킬 수 있습니까? 표현식을 주문하는 것은 예상대로 작동해야합니다. 내가했기 때문에 내가 CAST 필요 karma_total DESC BY ORDER links``FROM - (서명 AS karma_down karma_up) AS karma_total

SELECT `post_id`, `karma_up`, `karma_down`, `karma_up` - `karma_down` AS `total` 
ORDER BY `total` DESC 
+0

OP는 최고를 원하며 Bill Karwin이 게시 한대로 DESC가 필요하다고 생각합니다. –

+0

감사합니다. 내 대답을 고정 –

0

아주 간단한

6
SELECT *, karma_up - karma_down AS karma_total 
FROM MyTable 
ORDER BY karma_total DESC; 
+0

아야, 정답을 게시 한 직후에 정답을 게시했습니다. – Pachonk

+1

당신은 약간 이기고, 당신은 약간을 잃습니다. 중요한 것은 OP가 질문에 대한 답변을 얻었습니다. –

+1

진실 되, 그러나 다만 공감이. – Pachonk