我在MySql中有两个表(用户和关注者),我有以下查询:
$sql=" SELECT u.* FROM theUsers u
INNER JOIN Follows ul ON ul.theUserLike = u.userName
WHERE ul.myUsername = '$userName' ORDER BY userName DESC";
上面的sql工作正常,我需要的是运行它并调用除了一个以外的所有用户,这就是我试过的:
$sql=" SELECT u.* FROM theUsers u
INNER JOIN Follows ul ON ul.theUserLike = u.userName
WHERE ul.myUsername = '$userName' AND ul.myUsername <> 'admin' ORDER BY userName DESC";
但结果是空的,希望能找到答案。
答案 0 :(得分:1)
如果您想要除管理员以外的所有用户,您可以这样做
$sql=" SELECT u.* FROM theUsers u
INNER JOIN Follows ul ON ul.theUserLike = u.userName
WHERE ul.myUsername <> 'admin' ORDER BY userName DESC";
您可以通过$ other_user更改管理员,请注意$ other_user必须与$ userName不同
$sql=" SELECT u.* FROM theUsers u
INNER JOIN Follows ul ON ul.theUserLike = u.userName
WHERE ul.myUsername <> $other_user ORDER BY userName DESC";
答案 1 :(得分:1)
原因是你得到null的原因是,因为你使用AND
两个条件都需要为真,如果你的下表包含管理员用户那么你将获得null结果,我看不到如果您的follow表包含不同的用户,为什么你会得到null。
theUsers table
按照表格
只有当theUsers
表包含userName
theUserLike
并且myUsername
表中的Follows
$userName = 'pete';
$sql=" SELECT u.* FROM theUsers u
INNER JOIN Follows ul ON ul.theUserLike = u.userName
WHERE ul.myUsername = '$userName' AND ul.myUsername <> 'admin' ORDER BY userName DESC";
$rst=$mysqli->query($sql);
$data = $rst->fetch_assoc();
while ($data != null) {
echo $data['userName'];
$data = $rst->fetch_assoc();
}
输出:pete
答案 2 :(得分:0)
$sql=" SELECT u.* FROM theUsers u
INNER JOIN Follows ul ON ul.theUserLike = u.userName
WHERE ul.myUsername <> 'admin' OR ul.myUsername = '$userName' ORDER BY userName DESC";
这里我们首先检查Not admin条件,然后检查OR条件
的$ userName条件