根据条件过滤MySQL表

问题描述 投票:0回答:1

我正在为此苦苦挣扎。我想使用一个字段内的条件来过滤表结果,该条件驱动其他字段的结果。我正在尝试做的事情的简单版本:

ORG查看字段和值

org_name, revenue, costs, year
org_w, 50, 40, 2020
org_w, 60, 50, 2021
org_x, 20, 10, 2020
org_x, 100, 80, 2021
org_y, 50, 40, 2020
org_y, 120, 100, 2021

我想运行一个查询来过滤上述所有表格视图,其中 2021 年的收入在 100 到 500 之间

作为示例,它将返回以下结果(即排除 org_w,因为其 2021 年的收入超出范围)

org_name, revenue, costs, year
org_x, 20, 10, 2020
org_x, 100, 80, 2021
org_y, 50, 40, 2020

如果有人可以帮助我,我将非常感激。

我尝试将年份放入列中,但失败了......即 max(年份 = 2021 年则收入结束的情况)AS 2021

mysql phpmyadmin
1个回答
0
投票

您可以使用

EXISTS
检查一个或多个条件是否对一个组织名称有效。

CREATE TABLE Tablen
(`org_name` varchar(5), `revenue` int, `costs` int, `year` int)
;
    
INSERT INTO Tablen
    (`org_name`, `revenue`, `costs`, `year`)
VALUES
    ('org_w', 50, 40, 2020),
    ('org_w', 60, 50, 2021),
    ('org_x', 20, 10, 2020),
    ('org_x', 100, 80, 2021),
    ('org_y', 50, 40, 2020),
    ('org_y', 120, 100, 2021)
;

SELECT `org_name`, `revenue`, `costs`, `year`
FROM Tablen tn
WHERE EXISTS ( SELECT 1 FROM Tablen WHERE `org_name` = tn.`org_name` 
  AND `revenue` BETWEEN 100 AND 500 AND `year` = 2021)
组织名称 收入 费用
org_x 20 10 2020
org_x 100 80 2021
org_y 50 40 2020
org_y 120 100 2021

小提琴

© www.soinside.com 2019 - 2024. All rights reserved.