Mysql 查询在 WHERE 中使用 SELECT

标签 mysql sql

我有表“leads”,其中包含“lead_id”、“bearbeitungs_id_einkauf”、“ep”列

示例:

lead_id     bearbeitungs_id_einkauf   ep

1           12345                      10
2           12345                      20
3           77777                      5
4           88888                      8

我需要获取 'ONT' > 20 的所有记录。 ONT 是按 'bearbeitungs_id_einkauf' 分组的总和 'ep' :

'12345' = 30
'77777' = 5
'88888' = 8

因此,结果我只需要显示这些记录:

lead_id     bearbeitungs_id_einkauf   ep

1           12345                      10
2           12345                      20

我尝试过这个:

SELECT l.lead_id, l.bearbeitungs_id_einkauf, l.ep
FROM leads as l
WHERE (SELECT SUM(ep) as ONT FROM leads l2
       WHERE l2.bearbeitungs_id_einkauf = l.bearbeitungs_id_einkauf) > 20;

但不明白这是正确的吗?我如何显示 ONT? 谢谢!

最佳答案

考虑以下因素:

DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(id SERIAL PRIMARY KEY
,m VARCHAR(12) NOT NULL
,n INT NOT NULL
);

INSERT INTO my_table VALUES
(1,'12345',10),
(2,'12345',20),
(3,'77777',5),
(4,'88888',8);

SELECT * FROM my_table;
+----+-------+----+
| id | m     | n  |
+----+-------+----+
|  1 | 12345 | 10 |
|  2 | 12345 | 20 |
|  3 | 77777 |  5 |
|  4 | 88888 |  8 |
+----+-------+----+

SELECT x.* 
  FROM my_table x 
  JOIN 
     ( SELECT m
            , SUM(n) total 
         FROM my_table 
        GROUP 
           BY m 
       HAVING total > 20
     ) y 
    ON y.m = x.m;
+----+-------+----+
| id | m     | n  |
+----+-------+----+
|  1 | 12345 | 10 |
|  2 | 12345 | 20 |
+----+-------+----+

关于Mysql 查询在 WHERE 中使用 SELECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59841397/

相关文章:

mysql - MySQL 上的 sql 查询优化

php - 用户注册表提交后出现空白页

sql - 扫描我希望看到的地方

sql - 如何在Postgresql中使用条件递归获取记录?

java - Hibernate自引用实体查询时重复字段

mysql - 想要一个 sql 来更新子字符串

sql - 无法绑定(bind)多部分标识符

mysql - 如何同时使用 'not in' 和 'null'?

mysql - schema.rb 神秘地变成了另一个文件

php - 将包含多个数组的数组放入mysql表中