我需要使用 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/