mysql基于同一字段返回两列

mysql基于同一字段返回两列,mysql,sql,Mysql,Sql,我试图通过查询另一列(tableB.X)是“男性”还是“女性”,基于一个字段(column_name)返回两列。我该怎么做?我仍然需要为这两列订购DESC。多谢各位 每行返回一个值和一个性别(2列)。我试图根据性别将值拆分为两列,然后按每个拆分列的计数降序显示 i、 e.输入表: SELECT (case when tableA.gender = 'Male' then tableB.X) as Male, (case when tableA.gender = 'Female' then ta

我试图通过查询另一列(tableB.X)是“男性”还是“女性”,基于一个字段(column_name)返回两列。我该怎么做?我仍然需要为这两列订购DESC。多谢各位

每行返回一个值和一个性别(2列)。我试图根据性别将值拆分为两列,然后按每个拆分列的计数降序显示

i、 e.输入表:

SELECT
(case when tableA.gender = 'Male' then tableB.X) as Male, 
(case when tableA.gender = 'Female' then tableB.X) as Female

...
FROM (MANY TABLES JOINT)
...

GROUP BY tableB.X
ORDER BY count(*) DESC
value     Gender
-----     ------
AAA       Male
BBB       Female
AAA       Male
CCC       Male
AAA       Female
BBB       Female
i、 e.产出表:

SELECT
(case when tableA.gender = 'Male' then tableB.X) as Male, 
(case when tableA.gender = 'Female' then tableB.X) as Female

...
FROM (MANY TABLES JOINT)
...

GROUP BY tableB.X
ORDER BY count(*) DESC
value     Gender
-----     ------
AAA       Male
BBB       Female
AAA       Male
CCC       Male
AAA       Female
BBB       Female

我也不知道有多少不同的值/将有多少不同的值,所以SQL必须为我计算。我可以通过两个查询得到结果,一个是WHERE-gender=male,另一个是WHERE-gender=female,但我想知道我是否可以在一个查询中得到结果。。谢谢大家!

我认为通过
UNION
语句可以实现类似的功能。但以下内容未经测试:

Rank      Male      Female
----      ----      ------
 1        AAA       BBB          (AAA because it has 2 male occurences, BBB has 2 female occurences)
 2        CCC       AAA          (1 occurence each for male and female, ordered descending order)

您也可以使用
NULL

来代替空字符串
'
”,您到底想做什么?因为这目前没有意义。例如,如果我的表中有'Alice'、'Female'和'Bob'、'Male'-您希望在这个SELECT的结果中有哪些行?你愿意和男class='Bob'和女class='Alice'坐一排吗?或者,您是否希望有一行使用Male='Bob'和Female=NULL,另一行使用Male=NULL和Female='Alice'?您能给出一个您正在寻找的输出示例吗?正如PaF所说,这一点目前还不是很清楚。因为您在问题中添加了示例数据,所以我现在对您的问题的理解有所不同。不过,我看不出男性和女性专栏之间有任何联系。选择所有的雄性,然后对它们进行排名,然后对所有的雌性重复同样的事情,这样可以吗?结果不在一个表中,但可以单独修复。是的,我可以做到:)我只是想知道是否可以使用SQLIt在组合中实现这一点,但是否可以不包含任何空行?我想根据它们被分离后的出现次数,按每列降序对它们进行排序。基于我上面的想法:
从我的声明中选择id,Sum(男性),Sum(女性)\u按id顺序分组,按男性
。您必须添加另一列(在内部语句中称为
id
),并可能将
'
替换为
0