我有两张桌子users
和distance
. 在一个页面中,我需要使用一个简单的查询来列出所有用户,例如select * from users where active=1 order by id desc
.
有时我需要从distance
表中输出数据以及此查询,其中用户 ID 字段在表中的两列users
中的任何一个中匹配,例如和。同样在表中,提到的两个列中的任何一个也必须与where 子句中的指定 id ( ) 匹配。distance
userID_1
userID_2
distance
$userID
这是我想出的最好的:
select
a.*,
b.distance
from
users a,
distance b
where
((b.userID_1='$userID' and a.id=b.userID_2)
or (a.id=b.userID_1 and b.userID_2='$userID'))
and a.active=1
order by a.id desc
此查询的唯一问题是,如果distance
表中没有用于 where 子句查找匹配项的条目,则查询根本不会返回任何内容。我仍然希望它从user
表中返回行,distance
如果没有匹配项则返回 null。
我不知道在这种情况下是否需要使用 JOIN、UNION、SUBQUERY 或其他任何东西。
谢谢。