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를 돌려서 한번 최대값 필드명을 저장하고 다음부터는 입력시
최대값 필드를 등록하는 코드를 만들어 사용하는 것이....
답변을 작성하시기 전에 로그인 해주세요.