2016-08-25 4 views
3

가장 큰 수의 상위 3 개 열인 테이블의 열 이름이 필요합니다. 내가 MySQL을 사용하고상위 3 카운트의 열에 대한 테이블의 열 이름 가져 오기

:

나는이 쿼리를 사용하여 필요한 열 수를 얻을 수 있었다 그러나

AH SCH MP PG DG RS RT ST WT RP SS 
=========================================== 
0 0 12 1 7 16 2 9 0 9 1 

다음과 같이 나는 결과를 얻을

SELECT 
COUNT(unsafe_spaces_home) AS AH , 
COUNT(unsafe_spaces_school) AS SCH , 
COUNT(unsafe_spaces_market_place) AS MP , 
COUNT(unsafe_spaces_field_or_playground) AS PG , 
COUNT(unsafe_spaces_dumping_ground) AS DG , 
COUNT(unsafe_spaces_railway_station) AS RS , 
COUNT(unsafe_spaces_route_to_toilet) AS RT , 
COUNT(unsafe_spaces_toilet) AS ST , 
COUNT(unsafe_spaces_well_or_water_pump) AS WT , 
COUNT(unsafe_spaces_river_pond) AS RP , 
COUNT(unsafe_spaces_sewer) AS SS 
FROM formdata 

을 다음과 같이 필요한 결과가 필요합니다.

top_3_columns 
================ 
    RS,MP,ST 

어떻게해야합니까?

+0

어떻게 ST 원하는 올하지만 RP로 열 이름을 생각해? – jarlh

+0

저는 예제를 보여주기 위해 ST 또는 RP를 사용할 수 있지만 상위 3 개 카운트를 갖는 열만 – Mufaddal

+0

ST와 RP를 모두 가질 수 있습니까? (둘 다 상위 3 카운트를 가지고 있습니다.) – jarlh

답변

1

는 그런 다음 당신이 사용할 수있는 A, B, C, D, 전자 다음 쿼리

select tagName, value from 
(select 'a' tagName, count(a) value from formdata UNION 
select 'b' tagName, count(b) value from formdata UNION 
select 'c' tagName, count(c) value from formdata UNION 
select 'd' tagName, count(d) value from formdata UNION 
select 'e' tagName, count(e) value from formdata 
) 
as results 
order by value desc 
limit 3; 
+0

완벽 ... 이것은 정확히 내가 사용한 방법입니다 ... 매력처럼 작동합니다 .... 고마워요 .... – Mufaddal

관련 문제