MySQL查询数据,其中列数据不相等

MySQL查询数据,其中列数据不相等,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_unicod

我在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;
我的问题是如何获取数据,而不是从
count
结果的同一
ip
列获取数据,因为我不擅长统计,欢迎任何改进。 下面是
os_name
os_structure
count
的示例。当我尝试按ip分组时,真/假结果等于64位系统(表示真)或32位系统(表示假)。结果比预期的要多。我多次得到
Windows7 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。

“如何在计数结果上获取数据,但不从同一ip列获取数据”-我需要的不仅仅是这些。如果您希望将每个
ip
的计数分开,请尝试将其添加到
group by
子句中,因此它是
group by ip,os_名称,os_结构,我编辑并给出了示例和更多信息。如果我按
ip
分组,结果比预期的要多,我得到了很多次windows 7 professional,这不是我想要的。那么你想要什么?举个例子会很有帮助。Microsoft Windows 7 Professional True 36我想从数字36中删除相同的
ip
,假设有10个(36个)结果具有相同的
ip
,我希望结果中的数字是27,因为它们具有相同的
ip
(保留10个相同的
ip
)作为结果