Mysql 当日期来自两个字段时,如何维护日期字段顺序?
我有两个表交易和费用。我已经编写了一个查询来获取日期相关的事务语句。这里的交易表是存款表。对于这个查询,我得到了我想要的结果,没有订单日期Mysql 当日期来自两个字段时,如何维护日期字段顺序?,mysql,Mysql,我有两个表交易和费用。我已经编写了一个查询来获取日期相关的事务语句。这里的交易表是存款表。对于这个查询,我得到了我想要的结果,没有订单日期 SELECT IFNULL(date(t1.created), date(ex.created)) as Date , sum(t1.amount) as ReceiveAmount,ex.amount as ExpensesAmount FROM transactions as t1 LEFT JOIN ( SELECT
SELECT IFNULL(date(t1.created), date(ex.created)) as Date , sum(t1.amount) as ReceiveAmount,ex.amount as ExpensesAmount
FROM transactions as t1
LEFT JOIN (
SELECT sum(e.amount) as amount, created
FROM expenses as e
group by date(e.created)
) as ex
ON date(ex.created) = date(t1.created)
GROUP BY date(t1.created)
UNION
SELECT IFNULL(date(t1.created), date(ex.created)) as Date, sum(t1.amount) as Receive,ex.amount as ExpensesAmount
FROM transactions as t1
RIGHT JOIN (
SELECT sum(e.amount) as amount, created
FROM expenses as e
group by date(e.created)
) as ex
ON date(t1.created) = date(ex.created)
GROUP BY date(t1.created)
输出:
Date ReceiveAmount ExpensesAmount
2018-12-04 600 NULL
2019-08-01 500 NULL
2019-10-18 500 NULL
2019-11-18 820 500 <== that should come at last.
2019-11-04 NULL 100
日期收到金额支出金额
2018-12-04 600零
2019-08-01 500零
2019-10-18 500零
2019-11-18 820 500在将工会的两半放在括号中后,您可以在工会查询中添加一个ORDER BY
子句:
(SELECT IFNULL(t1.created, DATE(ex.created)) AS Date, SUM(t1.amount) AS ReceiveAmount,
ex.amount AS ExpensesAmount
FROM transactions as t1
LEFT JOIN
...
)
UNION ALL
(SELECT IFNULL(t1.created, DATE(ex.created)), SUM(t1.amount), ex.amount
FROM transactions as t1
RIGHT JOIN
...
)
ORDER BY Date
我在这里假设您真的想要一个联合所有
,而不是联合
。请注意,在大多数其他RDBMS中,您必须使用正式的子查询将ORDER BY
子句应用于整个联合查询。将ORDER BY Date
添加到您的查询中。请参阅