我的表格结构如下所示:
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中使用循环来获得正确的结果,但它很混乱,我相信它应该可以通过单个查询。
由于
答案 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