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

时间:2018-03-16 11:15:01

标签: php mysql

我需要使用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时才会获取数据。

5 个答案:

答案 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 );

我已经测试了它并且它有效。