我有这张桌子:
SET NAMES utf8;
SET time_zone = '+00:00';
CREATE TABLE `app_log` (
`ID` int(11) unsigned NOT NULL AUTO_INCREMENT,
`serial` int(11) NOT NULL,
`dataEntryIP` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`dataEntryUA` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`domain` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`timeStamp` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`ID`),
KEY `serial` (`serial`)
) ENGINE=InnoDB AUTO_INCREMENT=4328 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
可能的数据样本如下:
INSERT INTO `app_log` (`ID`, `serial`, `dataEntryIP`, `dataEntryUA`, `domain`, `timeStamp`) VALUES
(6,33605,'2.5.29.18','Google Chrome','www.domain1.com','2017-08-18 18:44:23'),
(7,33606,'8.102.167.213','Google Chrome','domain1.com','2017-08-18 18:45:48'),
(8,33607,'8.24.10.14','Google Chrome','www.domain0.com','2017-08-18 18:58:13'),
(9,33608,'8.24.10.14','Google Chrome','domain0.com','2017-08-18 18:58:13'),
(10,33609,'8.24.10.14','Google Chrome','domain1.com','2017-08-18 19:06:44'),
(11,33610,'8.24.10.14','Google Chrome','www.domain0.com','2017-08-18 19:06:44'),
(12,33611,'7.10.14.11','Google Chrome','domain2.com','2017-08-18 19:12:48'),
(13,33612,'7.10.14.11','Google Chrome','www.domain2.com','2017-08-18 19:12:48'),
(14,33613,'9.45.21.18','Google Chrome','domain3.com','2017-08-18 19:18:10');
现在我需要选择使用了多个域的任何 IP,对于此示例,它是:8.24.10.14 因为它使用了两个域:domain0 和 domain1
我该怎么做?
非常感谢
您可以使用此查询:
注意上面的查询没有使用任何索引。
如果您的表将增长,请索引 dataEntryIP 列
更新 1
哦,对不起,我不明白你的问题。
我建议在将数据插入 app_log 之前删除 www。统一域的前缀(www.domain1.com 等于 domain1.com)。
但就目前而言,我认为它可以提供帮助:
但是如果你的桌子很大,它会很慢。
如果你可以删除 www。在插入表之前,您的查询将更加容易和快速。