这是我的表格的样子:
id | name | value
-----------------
1 | user1| 1
2 | user2| 1
3 | user3| 3
4 | user4| 8
5 | user5| 6
6 | user7| 4
7 | user8| 9
8 | user9| 2
我想做的是选择所有其他用户,在一个查询中,谁的值是 user1 的值低于它的值加 3,高于它的值减去 3 或等于它的值。
像这样:
$result = mysqli_query($con,"SELECT * FROM users WHERE value<'4' OR value>'-2'") or die("Error: ".mysqli_error($con));
while($row = mysqli_fetch_array($result))
{
echo $row['name'].'<br/>';
}
问题是每次运行查询时 users1 的值都可能不同。
最佳答案
对不起,名字很蹩脚,但这应该可行:
注意:我将包含您的数据的表命名为“st”。
SELECT b.user, a.value as "user1val", b.value as "otheruservalue" FROM st as a
join st as b
on a.user = "user1" and a.user != b.user
where
(b.value > (a.value - 3)) and (b.value < (a.value + 3))
我们通过加入同一个表来获得用户 1 的值和其他用户的值的唯一对。之后我们只是做一些简单的比较来过滤具有合适值的行。
关于PHP/MySQL : 2 selects from same table in one query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22512839/