PHP/MySQL : 2 selects from same table in one query

标签 php mysql select mysqli

这是我的表格的样子:

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/

相关文章:

PHP从mysql逆序

php - 将某人重定向到浏览器定义的搜索引擎

php - 上传sendfile文件作为附件并在php中下载该文件

mysql - 如何在MySQL中逐行显示记录字符串

Mysql,在 JSON 字段中搜索?

php - 选择并插入

php - 将数据库中的时间与当前时间进行比较

php - 如何防止PHP变量是数组或对象?

php - 我应该在哪里进行计算,PHP 还是 Mysql?

mysql - 如何在柴油模型.rs中用空格写列名?