2

我有两张表 DETAILS 和 BANLIST。我搜索 DETAILS 表以获取 IP 列表:

select ip, time, othecol from details WHERE somefield=X

结果我得到零或N条记录。同时我需要知道返回的IP是否被禁止。我可以这样检查:

select isbanned from banlist WHERE ip=someIP

是否可以将两个语句合并为一个?

获取格式列表:| ip, time, othercol, isbanned |

4

3 回答 3

2

您可以使用JOIN

SELECT d.ip, d.time, d.othercol, b.isbanned FROM details d
LEFT JOIN banlist b on b.ip = d.ip
WHERE d.somefield=X

请注意,b.isbannednull用于在details中没有匹配 IP 的行banlist。您可以将该值合并为 false(此语法因您使用的 RDMS 而异。)

于 2012-09-17T16:20:41.640 回答
1

I think you're trying to do a simple join

SELECT d.ip, b.isbanned
FROM details d
LEFT JOIN banlist b  ON d.ip = b.ip
WHERE foo=bar
于 2012-09-17T16:22:26.687 回答
0

查看 SQL 的INNER JOIN 关键字

SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
于 2012-09-17T16:18:26.317 回答