테스트 사이트 - 개발 중인 베타 버전입니다

db 최대값 칼럼이름 가져오기 채택완료

으악가즈아 5년 전 조회 5,390

사진과 같이 게시판에 가중치를 DB에 저장시켰는데 테이블 하나를 더 만들어 이 한 행에서 최대값을 가진 칼럼의 이름을 저장하고싶습니다. 도무지 방법이 떠오르지 않아 도와주세요 ㅜㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변 5개

채택된 답변
+20 포인트
5년 전
이런건 php 코드로 한번 돌리는게 좋을것 같습니다만,,,,
방법이 없다면, 다음과 같이 해볼수 있습니다.
SELECT Name, @highest_val:= GREATEST(type1, type2, type3) AS highest_col_value,
   CASE @highest_val WHEN type1 THEN 'type1'
                     WHEN type2 THEN 'type2'
                     WHEN type3 THEN 'type3'                         
   END AS highest_value_column_name
FROM myTable 
Where unique_column = {som_value...}</code>
</pre>

<p>

 

일괄 업데이트 할려면 위의 쿼리를 응용해서 만드시면 될것 같네요.

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

5년 전

필드 4개에 들어가는 최대값이 항상 40인가요?

두개 이상의 필드에 40이 들어가는 경우는 없나요?

더 상세한 설명이 잇어야겟네요

 

처음부터 필드에 값 입력/수정시 최대값 필드명를 다른 여분 필드에 저장하는 방식으로 하면

간단한 일일텐데요

레코드수가 많다면 loop를 돌려서 한번 최대값 필드명을 저장하고 다음부터는 입력시

최대값 필드를 등록하는 코드를 만들어 사용하는 것이....

 

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

B
5년 전

40, 40, 0, 0 처럼 큰 값이 중복되는 경우는요?

 

그리고, 테이블 추가해서 저장인가요? 필드 추가해서 저장인가요?

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

select max(ca_id_10) as ca_id_10_max, max(ca_id_20) as ca_id_20_max, max(ca_id_30) as ca_id_30_max, max(ca_id_40) as ca_id_40_max from table 

이렇게 해서 그 값을 넣으면 각 필드에 최대값 아닐까요 ?

값을 비교하면 네 필드중 가장 큰 값을 가진 컬럼을 뽑는 것도 가능할 것 같네요 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

5년 전

최대값을 가진 컬럼 이름이요? 그건 쿼리로 안됩니다.

각 컬럼의 값을 비교해서 따로따로 값을 처리해야 됩니다

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인