忽略MySQL输出中的一个特定行

时间:2013-03-22 01:51:49

标签: php mysql

我编写了一个包含用户MySQL表的应用程序。以下代码从表中查找冷却等级在当前用户冷却等级的20%范围内的用户。

$query = "SELECT USERNAME FROM USERS WHERE RATING BETWEEN ".$coolnessRating." * 0.8 AND ".$coolnessRating." * 1.2";
$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_array($result)) {

    echo $row['USERNAME'];
}

我的问题是这样的:如果我有一个用户并且他们的冷静等级是20,例如,他们自己在结果集中返回,因为显然他们自己的评级在他们的评级的20%之内,如果这是有道理的。

有没有办法忽略这个特定的行,但打印出结果集的其余部分?

6 个答案:

答案 0 :(得分:2)

“如果我有用户”则表示您拥有其用户名或ID,对吧?使用AND将条件添加到where子句中。

答案 1 :(得分:1)

您是否只想添加不等于您的WHERE标准:

SELECT USERNAME 
FROM USERS 
WHERE RATING <> ".$coolnessRating." 
    AND RATING BETWEEN ".$coolnessRating." * 0.8 AND ".$coolnessRating." * 1.2"

答案 2 :(得分:1)

放弃通常的“使用PDO!您的代码容易受到攻击!” spiel,你会包含另一个AND“not this user”条件

$query = "SELECT USERNAME FROM USERS WHERE RATING BETWEEN ".$coolnessRating." * 0.8 AND ".$coolnessRating." * 1.2 AND USERNAME != ".$user."";
$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_array($result)) {

    echo $row['USERNAME'];
}

答案 3 :(得分:1)

只需将其与WHERE子句的另一部分一起过滤掉:

SELECT USERNAME
FROM USERS
WHERE RATING BETWEEN $coolnessRating * 0.8 AND $coolnessRating * 1.2
AND USER_ID != $current_user_id

(显然最后一行取决于列名是什么以及如何存储当前用户ID)

答案 4 :(得分:1)

首先,您需要从当前用户获取信息,例如他们的ID或用户名。

然后你可以做

$query = "SELECT USERNAME FROM USERS WHERE RATING BETWEEN ".$coolnessRating." * 0.8 AND ".$coolnessRating." * 1.2 AND id != " . $id;

$query = "SELECT USERNAME FROM USERS WHERE RATING BETWEEN ".$coolnessRating." * 0.8 AND ".$coolnessRating." * 1.2 AND id != " . $username;

其中$ username和$ id是当前用户的ID和用户名

答案 5 :(得分:0)

为什么不满足你的病情&lt; 20%我不能说,因为你没有提到预期的传递值