我有一个查询,列出了付款(付款表),我希望它按任务的日期排序(2 个单独的表 - quotedb 和包装)这些付款与
我的查询:
SELECT a.*
FROM payments AS a
LEFT JOIN quotedb AS b ON a.orderid = b.id
LEFT JOIN packaging AS p ON a.orderid = p.id
WHERE a.status='Pending' AND (b.moveday<'$today' OR p.datestamp<'$today')
ORDER BY b.moveday, p.datestamp
付款表示例:
id payment orderid
-------------------
1 payment1 1
2 payment2 2
3 payment3 3
4 payment4 4
5 payment5 5
6 payment6 6
quotedb 表示例:
id moveday
-----------
1 05.07.18 > related to payments table id 1
2 08.07.18
3 10.07.18
打包表示例:
id datestamp
-----------
4 06.07.18 > related to payments table id 4
5 07.07.18
6 19.07.18
我从表中加入结果,但排序有问题,查询似乎打印了未排序的“打包”表结果,然后是按移动日期排序的“quotedb”结果
我希望这些结果按(加入的 moveday 和 datestamp)排序
最佳答案
您可以使用UNION ALL
来合并quotedb
和packaging
表。并使用 grp
生成一个数字来生成 Order by
序号
SELECT a.*
FROM payments a
LEFT JOIN
(
SELECT 1 grp,id,moveday AS day
FROM quotedb
UNION ALL
SELECT 2,id,datestamp
FROM packaging
) t on a.orderid = t.id
ORDER BY t.grp,t.day
关于mysql - 连接表并按 2 个不同的列排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51417004/