MySQL不在哪里
我有一个名为Project的表,其项目数据如下MySQL不在哪里,mysql,Mysql,我有一个名为Project的表,其项目数据如下 +--------+------------+------------+----------+--------+---------------+--------+ | In Num | pro_no_old | pro_no_new | pro_name | amount | budget_status | status | +--------+------------+------------+----------+--------+------
+--------+------------+------------+----------+--------+---------------+--------+
| In Num | pro_no_old | pro_no_new | pro_name | amount | budget_status | status |
+--------+------------+------------+----------+--------+---------------+--------+
| 1 | pro1 | | project1 | 200000 | original | 1 |
| 2 | pro2 | | project2 | 150000 | original | 1 |
| 3 | pro3 | | project3 | 300000 | original | 1 |
| 4 | pro2 | pro4 | project4 | 100000 | revised | 0 |
+--------+------------+------------+----------+--------+---------------+--------+
02专业名称Project4已通过修订从Project2变为Project4。然后我需要得到没有修改过的项目,比如Project2。换句话说,不需要得到一个修改过的项目的前一个项目。预期输出可能如下所示
+--------+------------+------------+----------+--------+---------------+--------+
| In Num | pro_no_old | pro_no_new | pro_name | amount | budget_status | status |
+--------+------------+------------+----------+--------+---------------+--------+
| 1 | pro1 | | project1 | 200000 | original | 1 |
| 3 | pro3 | | project3 | 300000 | original | 1 |
| 4 | pro2 | pro4 | project4 | 100000 | revised | 0 |
+--------+------------+------------+----------+--------+---------------+--------+
03我使用以下查询来获得所需的输出
SELECT * FROM project WHERE('pro_no_old in (SELECT pro_no_old FROM project where budget_status = "original"))
04但是没有得到预期的结果。有人能帮我吗
编辑后的所需输出
我不确定您的数据模型,但如果您只对pro_no_old的最后一个条目感兴趣
select *
from t
where innum = (select max(innum) from t t1 where t1.pro_no_old = t.pro_no_old);
+-------+------------+------------+----------+--------+---------------+--------+
| InNum | pro_no_old | pro_no_new | pro_name | amount | budget_status | status |
+-------+------------+------------+----------+--------+---------------+--------+
| 1 | pro1 | NULL | project1 | 200000 | original | 1 |
| 3 | pro3 | NULL | project3 | 300000 | original | 1 |
| 4 | pro2 | pro4 | project4 | 100000 | revised | 0 |
+-------+------------+------------+----------+--------+---------------+--------+
3 rows in set (0.00 sec)
你试过了吗?你想到了什么?有什么问题吗?@轻量级在轨道上比赛。伊迪丝之后见。我很好奇——如果预算再次被修改,会发生什么?@P.Salmon。如果将项目2的预算从150000更改为100000,则新项目将不会分配给新项目。此修订版可以根据需要进行更多更改。您说您没有获得预期结果。你得到了什么结果?接下来您尝试了什么?如果我需要将project4修改为project5,金额为50000,那么可以在查询中更改什么。请。请参见我对原始问题的编辑
select *
from t
where innum = (select max(innum) from t t1 where t1.pro_no_old = t.pro_no_old);
+-------+------------+------------+----------+--------+---------------+--------+
| InNum | pro_no_old | pro_no_new | pro_name | amount | budget_status | status |
+-------+------------+------------+----------+--------+---------------+--------+
| 1 | pro1 | NULL | project1 | 200000 | original | 1 |
| 3 | pro3 | NULL | project3 | 300000 | original | 1 |
| 4 | pro2 | pro4 | project4 | 100000 | revised | 0 |
+-------+------------+------------+----------+--------+---------------+--------+
3 rows in set (0.00 sec)