sql从两个表中选择

时间:2012-09-17 16:17:42

标签: sql select

我有两个表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 |

3 个答案:

答案 0 :(得分: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中没有匹配IP的行,details将为banlist。您可以coalesce将该值变为false(其语法因您使用的RDMS而异。)

答案 1 :(得分:1)

我认为您正在尝试进行简单的加入

SELECT d.ip, b.isbanned
FROM details d
LEFT JOIN banlist b  ON d.ip = b.ip
WHERE foo=bar

答案 2 :(得分:0)

查看SQL的INNER JOIN keyword

SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name