gpt4 book ai didi

mysql - 使用小于、Order Desc 查询连接第二张表

转载 作者:行者123 更新时间:2023-11-30 23:18:56 26 4
gpt4 key购买 nike

我有一个博客,可以记录对我网站的访问:

Table weblog
id logdate browser ipaddr inet_aton_ip
1 2013-05-01 Chrome 42.61.66.124 708657788
2 2013-05-01 Chrome 217.9.192.99 3641294848
3 2013-05-02 Firefox 77.79.58.77 1297037901
...etc...

我下载了 ip2nation 数据库,它让我可以根据 inet_aton_ip 值查找国家/地区:

mysql> select * from ip2nation where ip<708657788 order by ip desc limit 1;
+-----------+---------+
| ip | country |
+-----------+---------+
| 708575232 | sg |
+-----------+---------+
mysql> select * from ip2nation where ip<3641294848 order by ip desc limit 1;
+------------+---------+
| ip | country |
+------------+---------+
| 3641286656 | uk |
+------------+---------+
... and so on ...

ip2nation 中的 ip 列标记了 IP 边界,因此搜索不精确,即无法进行相等比较。这种结构是有道理的,对于像 42.61.66.x 这样的子网,他们不必列出 255 个相似的条目。

使用像这样的 C# 例程

DataTable dt = [a sql function to select * from weblog]
foreach (DataRow row in dt.Rows)
{
long ipnum = int.Parse(row["inet_aton_ip"].ToString());
string cty = [a sql function to select country using ipnum]
}

我可以得到下表:

id  logdate    browser  ipaddr         inet_aton_ip  country
1 2013-05-01 Chrome 42.61.66.124 708657788 sg
2 2013-05-01 Chrome 217.9.192.99 3641294848 uk
3 2013-05-02 Firefox 77.79.58.77 1297037901 lt

我想知道我是否可以像在 C# 例程中那样使用一个 sql 而不是两个 sql 来生成上表?我尝试使用 subselects 和 join,但每次我都被“ip less than x order by ip desc limit 1”部分抛弃。在此感谢 SQL 专家的任何指点。

最佳答案

如果我们有 ip2nation 表,那么您可以像这样连接两个表:

SELECT w.*, ip.country
FROM weblog w
JOIN ip2nation ip
ON w.inet_aton_ip = ip.ipp

输出:

╔════╦════════════════════════════╦═════════╦══════════════╦══════════════╦═════════╗
║ ID ║ LOGDATE ║ BROWSER ║ IPADDR ║ INET_ATON_IP ║ COUNTRY ║
╠════╬════════════════════════════╬═════════╬══════════════╬══════════════╬═════════╣
║ 1 ║ May, 01 2013 00:00:00+0000 ║ Chrome ║ 42.61.66.124 ║ 708657788 ║ sg ║
║ 2 ║ May, 01 2013 00:00:00+0000 ║ Chrome ║ 217.9.192.99 ║ 3641294848 ║ uk ║
║ 3 ║ May, 02 2013 00:00:00+0000 ║ Firefox ║ 77.79.58.77 ║ 1297037901 ║ lt ║
╚════╩════════════════════════════╩═════════╩══════════════╩══════════════╩═════════╝

See this SQLFiddle

关于mysql - 使用小于、Order Desc 查询连接第二张表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16395449/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com