db 최대값 칼럼이름 가져오기
본문
사진과 같이 게시판에 가중치를 DB에 저장시켰는데 테이블 하나를 더 만들어 이 한 행에서 최대값을 가진 칼럼의 이름을 저장하고싶습니다. 도무지 방법이 떠오르지 않아 도와주세요 ㅜㅠ
답변 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...}
일괄 업데이트 할려면 위의 쿼리를 응용해서 만드시면 될것 같네요.
최대값을 가진 컬럼 이름이요? 그건 쿼리로 안됩니다.
각 컬럼의 값을 비교해서 따로따로 값을 처리해야 됩니다
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
이렇게 해서 그 값을 넣으면 각 필드에 최대값 아닐까요 ?
값을 비교하면 네 필드중 가장 큰 값을 가진 컬럼을 뽑는 것도 가능할 것 같네요
40, 40, 0, 0 처럼 큰 값이 중복되는 경우는요?
그리고, 테이블 추가해서 저장인가요? 필드 추가해서 저장인가요?
필드 4개에 들어가는 최대값이 항상 40인가요?
두개 이상의 필드에 40이 들어가는 경우는 없나요?
더 상세한 설명이 잇어야겟네요
처음부터 필드에 값 입력/수정시 최대값 필드명를 다른 여분 필드에 저장하는 방식으로 하면
간단한 일일텐데요
레코드수가 많다면 loop를 돌려서 한번 최대값 필드명을 저장하고 다음부터는 입력시
최대값 필드를 등록하는 코드를 만들어 사용하는 것이....