mysql - 具有不同字段的两个选择查询的并集

标签 mysql sql select sum

我有两张 table empmasterallocation 。我用过union进行sql操作以获取两个表的结果。 empmasterempid及其他empdetails 。表allocation包含empid来自empmaster作为外键,另一个名为 per_alloc 的字段。我需要检索empdetails满足:

  1. empmaster.empid不在allocation.empid中.

  2. empmaster.empidallocation.empid and allocation.per_alloc < 100 .

我使用的MySQL查询是:

  select distinct(tbl_empmaster.emp_fname) 
  from tbl_empmaster 
  where tbl_empmaster.emp_id not in(select tbl_allocation.emp_id 
                                    from tbl_allocation)
  union
  select distinct(tbl_empmaster.emp_fname) 
  from tbl_empmaster 
   where tbl_empmaster.emp_id in(select tbl_allocation.emp_id 
                                 from tbl_allocation  
                                 group by emp_id  
                                 having sum(per_alloc) < 100)

这仅检索 empdetails ,比如说tbl_empmaster.emp_fname ,我需要检索sum(per_alloc) from select tbl_allocation !!!当我尝试时,它给出了很多错误,有人可以告诉我正确的方法吗?

最佳答案

试试这个:

SELECT DISTINCT em.emp_fname, 0 alloc 
FROM tbl_empmaster em
WHERE em.emp_id NOT IN(SELECT emp_id FROM tbl_allocation)
UNION
SELECT DISTINCT em.emp_fname, SUM(a.per_alloc) alloc
FROM tbl_empmaster em 
INNER JOIN tbl_allocation a ON em.emp_id = a.emp_id 
GROUP BY a.emp_id 
HAVING SUM(a.per_alloc)<100

关于mysql - 具有不同字段的两个选择查询的并集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13839771/

相关文章:

mysql - SQL 查询选择前 14 个月,如果缺少任何月份,则添加金额 '0'

mysql - 从一个查询到另一查询选择结果

mysql - 如何简化多重强制转换 MySql select 语句?

php - 在php中获取数据库驱动的复选框值

mysql - 从数据库中获取下一条和上一条记录

mysql - 使用存储过程向MYSQL数据库添加自动日期字段

c# - 插入后如何获取新行的 GUID 值?

SQL关系数据库设计

java - 从列中搜索以获取各种数据的计数

mysql - mySQL 中使用 REPLACE 函数索引列