mysql - 如何合并两个mysql查询

标签 mysql sql

我想将这两个查询结合起来,两个 captain 应该相等:

select distinct(captain_name),sum(finaldiscount) as tot,payment_mode 
from   order_master 
where  payment_mode='card' 
group  by captain_name

select distinct(captain_name),sum(finaldiscount) as tot,payment_mode 
from   order_master 
where  payment_mode='cash' 
group  by captain_name

最佳答案

试试这个:

SELECT captain_name,
       Sum(finaldiscount) AS tot,
       payment_mode
FROM   order_master
WHERE  payment_mode IN( 'cash', 'card' )
       AND captain_name IN (SELECT captain_name
                            FROM   order_master
                            WHERE  payment_mode IN( 'cash', 'card' )
                            GROUP  BY captain_name
                            HAVING Count(DISTINCT payment_mode) = 2)
GROUP  BY captain_name,payment_mode 

子查询将只返回那些同时具有 payment_modecardcashcaptain_name。然后选择那些 captain_name 的行,并按 captain_name,payment_mode group by

如果您不想为 cardcash 单独的行,那么使用这个:

SELECT captain_name,SUM(finaldiscount)
FROM   order_master
WHERE  payment_mode IN( 'cash', 'card' )
GROUP  BY captain_name
HAVING Count(DISTINCT payment_mode) = 2

注意:我假设two captain should be equal 意味着只有那些由两个查询返回的船长,应该由组合查询返回。

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

相关文章:

ios - 从服务器更新 iOS 本地数据库

附近的 MySQL 值、连接、具有动态值的 abs

php - 从日期范围内的 mySQL 表中获取唯一值

SQL 条件关系

php - 导出pdf表格数据导入mysql

MySQL 自定义排序

mysql - 提供每年/每月新客户与回头客的数量

c# - 使用 C# 在 SQL 中插入数据表

mysql - 导入数据库时​​如何修复此错误?

MYSQL:根据值是否在第二个表中获取表中的 1 或 0 查询结果