我需要使用PHP和MySQL匹配MySQL表的多个相同列值。我在解释下面的表格。
DB_USER:
Package: h2o
Version: 3.18.0.4
Type: Package
Title: R Interface for H2O
Date: 2018-03-08
在这里,我需要> h2o.init(max_mem_size = "12g", nthreads = -1)
R is connected to the H2O cluster:
H2O cluster version: 3.18.0.4
...
H2O API Extensions: Algos, AutoML, Core V3, Core V4
R Version: R version 3.3.3 (2017-03-06)
,如果id status book_id
1 0 22
2 0 22
3 1 22
4 0 23
select query
表示相同status=0
,则表示如果表格允许说book_id
,则表示只返回值为true,否则为false。我在下面写一个例子。
book_id=22 and all status=0
这里根据示例表,只有最后一行会被提取,因为$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
所有状态= 0时才会获取数据。
答案 0 :(得分:1)
一个选项使用聚合来检查状态值:
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);
答案 1 :(得分:0)
你可以使用not in作为状态为1的id
select *
from my_table
where book_id not in (
select book_id
from my_table
where status = 1 )
答案 2 :(得分: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;
答案 3 :(得分:-1)
非常简单:
SELECT book_id,MAX(status) max_status FROM db_user GROUP BY book_id
是max_status
为0然后全部为0且不大于该值。
答案 4 :(得分:-1)
您可以使用以下查询。
select * from db_user where status=0 and book_id not in (select book_id from db_user where status = 1 );
我已经测试了它并且它有效。