查询循环中的Mysql查询

时间:2017-09-29 09:07:58

标签: mysql

我的表格结构如下所示:

status_id | report_id | report_type | status | tech_id
        1 |         1 |           1 |      1 |      23
        2 |         1 |           1 |      2 |      23
        3 |         1 |           1 |      3 |      23
        4 |         1 |           1 |      4 |      23
        5 |         2 |           1 |      1 |      23
        6 |         2 |           1 |      2 |      23
        7 |         2 |           1 |      3 |      23

每条记录都是基于report_id,report_type和tech_id的报告状态。

我想选择tech_id = 23和status = 3的位置 Query只返回1条记录为status_id“7”,因为第一条记录的状态为“4”

我已尝试过JOINS,DISTINCT等,但无法理解这一点, 目前我在PHP中使用循环来获得正确的结果,但它很混乱,我相信它应该可以通过单个查询。

由于

2 个答案:

答案 0 :(得分:0)

E.g:

DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(report_id INT NOT NULL
,status INT NOT NULL
,PRIMARY KEY(report_id,status)
);

INSERT INTO my_table VALUES
(1,1),
(1,2),
(1,3),
(1,4),
(2,1),
(2,2),
(2,3);

SELECT x.* 
  FROM my_table x 
  LEFT 
  JOIN my_table y 
    ON y.report_id = x.report_id 
   AND y.status = 4 
 WHERE x.status = 3 
   AND y.report_id IS NULL;
+-----------+--------+
| report_id | status |
+-----------+--------+
|         2 |      3 |
+-----------+--------+

编辑:OP的最后澄清......

SELECT report_id
     , MAX(status) status 
  FROM my_table 
 GROUP 
    BY report_id 
HAVING status = 3;

答案 1 :(得分:-1)

select max(status_id) from table where tech_id = 23 and status = 3

https://www.w3schools.com/sql/func_mysql_max.asp