mysql - 如何连接两个sql子查询

标签 mysql sql

我有 2 张 table
第一个名字是(员工)有 3 列(emp_id、first_name、last_name)
第二个表名称是 (works_with),也有 3 列 (emp_id、client_id、total_sales)
在 (works_with) 表中,相同的 emp_id 可以与不同的 client_id 相关

我需要从(work_with)表中提取(first_name)和(last_name)表单(employee)表及其超过30000的(total_sales)

我使用此代码为我提供了 (emp_id)*,其 (total_sales) 超过 30000

SELECT SUM(works_with.total_sales), works_with.emp_id
FROM works_with
WHERE works_with.emp_id IN (SELECT works_with.emp_id
                            FROM works_with 
                            WHERE works_with.total_sales > 30000) 
GROUP BY works_with.emp_id;

我用这段代码给了我那些(emp_id)的(first_name)和(last_name)*

SELECT employee.first_name, employee.last_name
FROM employee
WHERE employee.emp_id IN (SELECT works_with.emp_id
                          FROM works_with
                          WHERE works_with.total_sales > 30000);

有没有办法连接这两个代码或任何其他方式来获得我想要的结果

谢谢

最佳答案

您只是在寻找JOIN吗?

SELECT e.first_name, e.last_name, SUM(ww.total_sales)
FROM works_with ww JOIN
     employee e
     ON ew.emp_id = ww.emp_id
WHERE ww.emp_id IN (SELECT ww2.emp_id
                    FROM works_with  ww2
                    WHERE ww.total_sales > 30000
                   ) 
GROUP BY e.emp_id, e.first_name, e.last_name;

不需要子查询。它正在实现这个逻辑:

SELECT e.first_name, e.last_name, SUM(ww.total_sales)
FROM works_with ww JOIN
     employee e
     ON ew.emp_id = ww.emp_id
GROUP BY e.emp_id, e.first_name, e.last_name
HAVING MAX(ww.total_sales) > 30000;

但是,我怀疑您想要:

SELECT e.first_name, e.last_name, SUM(ww.total_sales)
FROM works_with ww JOIN
     employee e
     ON ew.emp_id = ww.emp_id
GROUP BY e.emp_id, e.first_name, e.last_name
HAVING SUM(ww.total_sales) > 30000;

关于mysql - 如何连接两个sql子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55210478/

相关文章:

java - 将日期时间插入 MS Access

mysql - 无法在 mysql 中的单个查询中更新和选择

mysql - Gearman 与 libmysql

sql - BULK INSERT 后检查 FK 约束

mysql - 具有多个 OR 的 SQL 查询的优先级

java - SQLite : Adding a row only if results in unique rows

mysql - 我可以使用 Snowflake 作为关系数据库吗?

php - 优化 Nginx

php - 在数据库中保留电子邮件格式

SQL 选择 *,但如果存在于另一个表中,则覆盖行的 'column value'