Php 如何获取与MySQL数据库多列值匹配的值
我需要使用PHP和MySQL匹配MySQL表的多个相同列值。我在下面解释我的表格 数据库用户: 这里我需要select查询,条件是如果同一个book_id的状态为0,意味着如果表中有让我们说book_id=22和all status=0,那么只有它会返回值true,否则为false。我在下面写一个例子Php 如何获取与MySQL数据库多列值匹配的值,php,mysql,Php,Mysql,我需要使用PHP和MySQL匹配MySQL表的多个相同列值。我在下面解释我的表格 数据库用户: 这里我需要select查询,条件是如果同一个book_id的状态为0,意味着如果表中有让我们说book_id=22和all status=0,那么只有它会返回值true,否则为false。我在下面写一个例子 $sql=mysqli_query($connect,"select * from db_user where status=0 and...."); if(mysqli_num_rows($sq
$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,存在状态=1。只有当一本书的id all status=0时,才会获取数据。对于状态为1的id,可以使用not in
select *
from my_table
where book_id not in (
select book_id
from my_table
where status = 1 )
一个选项使用聚合来检查状态值:
SELECT book_id
FROM db_user
GROUP BY book_id
HAVING SUM(CASE WHEN status <> 0 THEN 1 ELSE 0 END) = 0;
早在那天,我们就可以这样解决了。我说,如果它没有坏,就不要修理它
SELECT DISTINCT x.*
FROM my_table x
LEFT
JOIN my_table y
ON y.book_id = x.book_id
AND y.status = 1
WHERE y.id IS NULL;
很简单:
按书本id从db_用户组中选择书本id、MAXstatus和max_status
如果最大状态为0,则所有值都不大于0。您可以使用下面的查询
select * from db_user where status=0 and book_id not in (select book_id from db_user where status = 1 );
我已经测试过了,效果很好。再也没有人会说“老派”:-@草莓,我一听到评论就知道是你。它有你的味道。它的抛出错误1055-选择列表的表达式1不在GROUP BY子句中,并且包含未聚合的列“easyride.db_user.id”,它在功能上不依赖GROUP BY子句中的列;这与sql\u mode=only\u full\u组不兼容_by@subhra不。我的查询不会导致该错误,您正在运行其他东西,可能是对我所写内容的修改。@TimBiegeleisen:您的第二个查询正在运行,但其获取多个值意味着如果all status=0,则其获取簿\u id=22多次。这似乎是现有应答的重复。请仔细查看该查询是否不同,我在查询中添加了status=0,并检查了我的电脑是否正常工作@草莓
SELECT DISTINCT x.*
FROM my_table x
LEFT
JOIN my_table y
ON y.book_id = x.book_id
AND y.status = 1
WHERE y.id IS NULL;
select * from db_user where status=0 and book_id not in (select book_id from db_user where status = 1 );