我有两个表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 |
答案 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.isbanned
中null
中没有匹配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