【发布时间】:2021-04-27 03:27:31
【问题描述】:
如果 MySQL 的同一个表中存在特定记录,我正在尝试显示多个带有条件的数据并跳过行。
这是表格的示例
table_a
| id | bi_id | status |
|-------------|--------------|----------------|
| 1 | 111 |process1 |
| 2 | 112 |process1 |
| 3 | 112 |process2 |
| 4 | 113 |process1 |
| 5 | 111 |process2 |
| 6 | 111 |done |
| 7 | 112 |done |
我正在使用下面的这个查询来选择状态为“完成”的最后一个 ID
SELECT MAX(id) FROM table_a WHERE status="done" GROUP BY bi_id
斗争是我想显示状态不是“完成”的最后一个 ID,如果存在状态为“完成”的 bi_id,则不要选择最大 ID,如下表所示。
预期结果:
------------------
| max(id) |
|----------------|
| 4 |
我最后一次尝试是使用这个查询,但你知道这行不通。我也尝试过使用 NOT EXIST 进行查询,但也不工作。
SELECT MAX(id)
FROM table_a
WHERE status != "done" NOT IN
(SELECT id
FROM table_a
WHERE status = "done" GROUP BY bi_id) GROUP BY by_id
是否有任何解决方法可以通过 MySQL 查询或 php/codeigniter 来实现? 感谢和抱歉英语不好。
【问题讨论】:
-
您的预期结果是什么?
-
如果有的话,你会遇到什么错误?您的预期结果是什么?
-
我正在尝试获取状态不是“完成”的最大 id,如果 bi_id 具有“完成”状态则跳过行。我已经编辑了我的问题并添加了预期的表格结果。
-
@MohammadFahadRao 我没有遇到任何错误,只是结果不是我所期望的。我的预期结果是获得最后一个 id,其中 bi_id 不包含任何“完成”状态。
-
为什么只选择
id=3?对于bi_id=112,如果 ids 是2-3-7,则链是3,这很清楚...但是bi_id=111的同一链是1-5-6,为什么id=5不是选择了吗?
标签: php mysql codeigniter