MySQL不支持MINUS
集合运算符。
但即使它做了,它似乎没有多大意义,在该查询。该查询基本上说是返回一行,除非满足某个条件。
如果你想返回由两个查询返回的值之间的区别,只是减去它们,例如:
SELECT i.tot_income - e.tot_expense
FROM (SELECT SUM(trnscn_income_amount) AS tot_income FROM transactions2) i
CROSS
JOIN (SELECT SUM(trnscn_expense_amount) AS tot_expense FROM transactions1) e
但是,这是一个从MINUS
集合运算符有着根本的不同。如果你想要的是像MINUS
set操作符(在其他关系数据库中可用)的操作,那么你可以在MySQL中使用经典的“反连接”模式来模拟该操作:左连接返回左侧的所有行,以及匹配右侧的行,然后过滤掉所有匹配的行,留下没有匹配的左侧行。但我不认为这真的是你想要做的。如果MINUS
集合运算符在MySQL支持
此查询等同于原始查询:
SELECT i.tot_income
FROM (SELECT SUM(trnscn_income_amount) AS tot_income FROM transactions2) i
LEFT
JOIN (SELECT SUM(trnscn_expense_amount) AS tot_expense FROM transactions1) e
ON e.tot_expense = i.tot_income
WHERE e.tot_expense IS NULL