php - 如何获取与MySQL数据库的多列值匹配的值

标签 php mysql

我需要使用 PHP 和 MySQL 匹配 MySQL 表的多个相同列值。我在下面解释我的表格。

数据库用户:

id      status    book_id

 1        0         22

 2        0         22

 3        1         22

 4        0         23

这里我需要选择查询,条件是如果 status=0 对于相同的 book_id 意味着如果表有 book_id =22 和所有 status=0 那么只有它会返回值 true,否则返回 false。我在下面写了一个例子。

$sql=mysqli_query($connect,"select * from db_user where status=0 and....");
if(mysqli_num_rows($sql) > 0){
   $row=mysqli_fetch_array($sql);
   $data=$row['book_id'];
}else{
   return 0;
}

根据示例表,此处仅获取最后一行,因为对于 book_id=22 存在 status=1。只有当一个 book_id all status=0 时才会获取数据。

最佳答案

一个选项使用聚合来检查状态值:

SELECT book_id
FROM db_user
GROUP BY book_id
HAVING SUM(CASE WHEN status <> 0 THEN 1 ELSE 0 END) = 0;

我们也可以使用EXISTS:

SELECT DISTINCT t1.book_id
FROM db_user t1
WHERE NOT EXISTS (SELECT 1 FROM db_user t2
                  WHERE t1.book_id = t2.book_id AND t2.status <> 0);

关于php - 如何获取与MySQL数据库的多列值匹配的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49319433/

相关文章:

php - 我可以在 Laravel 5 session 中保存对象、对象集合吗?

php - 检测 DateTime 对象中是否指定了时间

php - 当我们在循环中没有修改数组时,为什么 foreach 会复制数组?

mysql - 计算不同日期 MySQL 返回一行

mysql - 无法约束两个联结表列

php - Mysqli 从两个表中选择

php - 使用 simpleXML 将 xml 数据插入 mysql

mysql - 在子查询返回多行的情况下对值求和。 (我的用例是 2 行)

mysql - 使用gcc的C代码无法链接到mysql头?

mysql - 如何在 MySQL 中对表进行透视