我在MySQL中创建了一个名为‘NOTICY’的表.这张桌子是这样的

fiction:

id name gender image browser os
1 chris male 1 0 ios
2 emma female 1 1 ios
3 james male 0 0 android
4 lucas male 1 0 android
5 amelia female 0 1 ios
6 olivia female 1 0 ios

我想要做的是检索列的名称,其中‘Gender’列中的记录具有值‘Male’,而所有其他列具有相同的值.例如,如果我运行以下代码:

SELECT * FROM fiction WHERE gender = "male";

输出将为:

id name gender image browser os
1 chris male 1 0 ios
3 james male 0 0 android
4 lucas male 1 0 android

如您所见,"Browser"列在所有记录中都有一个公共值"0".所以我想要这个列名为‘Browser’.另一个例子:

SELECT * FROM fiction WHERE gender = "female";

输出:

id name gender image browser os
2 emma female 1 1 ios
5 amelia female 0 1 ios
6 olivia female 1 0 ios

正如您在这里看到的,"os"列在所有这些列中都有一个共同值.我需要一条向我显示这些公共列的SQL语句.

我使用了GROUP BY和HAVING表达式,但正如您所猜到的,它们并没有解决我的问题.我认为我需要做一些与INFORMATION_SCHEMA表相关的事情.

推荐答案

SELECT *
FROM (
   SELECT 'name' col, name, count(*) c FROM mytable WHERE gender = 'male' group by name union all
   SELECT 'gender', gender, count(*) c FROM mytable WHERE gender = 'male' group by gender union all
   SELECT 'image', image, count(*) c FROM mytable WHERE gender = 'male' group by image union all
   SELECT 'browser', browser, count(*) c FROM mytable WHERE gender = 'male' group by browser union all
   SELECT 'os', os, count(*) c FROM mytable WHERE gender = 'male' group by os 
   
) x
WHERE x.c = (SELECT count(*) FROM mytable WHERE gender = 'male');
;

female的解决方案是一样的,只是把‘男’改成‘女’.

请参阅:DBFIDDLE

Mysql相关问答推荐

如何跨多个产品查找相同时间范围的数据集

默认情况下,MariaDB是否限制为本地主机?

如果我有USER列,如何将SQL CREATE TABLE与PostgreSQL和MySQL一起使用?

版本升级到5.0.0后在QueryDSL中使用Enum时出错

Mysql:使用like Select 查询

从单行中获取最大日期的最佳方法

根据名称将值从一个字段复制到不同记录的同一字段

如果存在N个特殊行,如何 Select 它们,其余的必须填充常规行,总行数不能超过MySQL中的X行?

根据 Power Query 中的条件替换值

如何优化使用多个 LEFT JOIN 和 GROUP BY 子句的慢速 MySQL 查询?

如何在不使用子查询的情况下按最小日期计算新用户?

组平SQL查询结果

MySQL 1292 截断不正确的日期时间值:'2020-09-11T08:32-50Z'

查询mysql中无法识别数据值

由于长时间操作而断开连接后,我的 sql 查询是否继续执行?

MySQL - 计算行重复的最大计数

自动登录 phpMyAdmin

用于国际和多语言目的的数据库建模

"SELECT COUNT(*)" 很慢,即使有 where 子句

SELECT INTO 和未声明的变量错误