mysql - MySQL查询不等于列数据的数据
问题描述
我在 MySQL 中使用这种结构
SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS `statistics`;
CREATE TABLE `statistics` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user` int(255) DEFAULT NULL,
`machine_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`os_structure` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`os_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`os_version` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`processor_count` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`version` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`country` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`country_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`date` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPRESSED;
到目前为止的查询是这样的:
SELECT `os_name`, `os_structure`, COUNT(*) AS `count` FROM `statistics` GROUP BY `os_name`, `os_structure` ORDER BY `count` DESC;
我的问题是如何获取数据,但不是从结果的同一ip
列获取count
,因为我不是统计专家,欢迎任何改进。以下是 , 的示例os_name
,当我尝试按 ip 分组时os_structure
,count
真/假结果等于 64 位系统(为真)或 32 位系统(为假)结果超出预期,我得到了很多次windows 7 professional
而不是什么我想。
Microsoft Windows 7 Professional True 36
Microsoft Windows 10 Pro True 26
Microsoft Windows 7 Ultimate False 12
Microsoft Windows 7 Professional False 11
Microsoft Windows 7 Ultimate True 5
Microsoft Windows 7 Enterprise False 1
Microsoft Windows 7 Professional N True 1
Microsoft Windows 7 Ultimate K False 1
解决方案
也许是一个计数(不同)
例如
MariaDB [sandbox]> select status,username from users;
+--------+----------+
| status | username |
+--------+----------+
| 14 | John |
| 13 | Jane |
| 12 | Ali |
| 11 | Bruce |
| 10 | Martha |
| 9 | Sidney |
| 8 | charlie |
| 7 | Elisa |
| 6 | Samantha |
| 5 | Hannah |
| 5 | Hannah |
| 3 | Kevin |
+--------+----------+
12 rows in set (0.00 sec)
MariaDB [sandbox]> select status,count(*), count(distinct username) from users group by status;
+--------+----------+--------------------------+
| status | count(*) | count(distinct username) |
+--------+----------+--------------------------+
| 3 | 1 | 1 |
| 5 | 2 | 1 |
| 6 | 1 | 1 |
| 7 | 1 | 1 |
| 8 | 1 | 1 |
| 9 | 1 | 1 |
| 10 | 1 | 1 |
| 11 | 1 | 1 |
| 12 | 1 | 1 |
| 13 | 1 | 1 |
| 14 | 1 | 1 |
+--------+----------+--------------------------+
11 rows in set (0.00 sec)
注意状态 5。
推荐阅读
- angular - Angular 4 将随机字符串值从数组设置为模板,并在两秒后更改为另一个字符串
- javascript - 如何让渲染的 ID 全局用作变量以在 React 中发送 API 请求?
- python - 分解两个不同 DataFrame 中的列
- c - UNIX 域数据报 - sendto 上的“无效参数”
- apache-kafka-streams - Kafka Streams TopologyTestDriver 输入输出主题
- javascript - 是否可以编写一个将 CPU 使用率添加到选项卡名称的 Chrome 扩展程序?例如 [xx%] 站点名称
- html - 将 div 添加到 DOM 时,如何为 div 创建持续 2 秒的背景颜色过渡?
- c++ - 为什么即使函数是用新定义的,删除临时也会崩溃
- laravel - laravel route - 搜索表单采用默认路径
- php - 在 PHP 中排列数组