mysql - 连接表并按 2 个不同的列排序
问题描述
我有一个查询,列出了付款清单(付款表),我希望它按任务日期排序(2 个单独的表 - 引用 b 和包装)这些付款与
我的查询:
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
引用表示例:
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
我从表中加入结果,但排序有问题,查询似乎打印未排序的“包装”表结果,然后按 moveday 排序的“quotedb”结果
我希望这些结果按(加入 moveday 和 datestamp)排序
解决方案
您可以使用UNION ALL
来组合quotedb
和packaging
表格。并使用grp
make a number 来制作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
推荐阅读
- simulation - Anylogic中资源可以承载多个代理吗?
- express - 如何在node / express js中访问hbs引擎视图目录中的文件夹中的文件
- amazon-web-services - AWS cloudwatch cron 表达式问题
- javascript - 是否有正确的方法可以单击组件标签以滚动到该页面?
- java - 使自定义视图使用布局权重
- reactjs - easy-peasy:无法调用或调度操作
- visual-studio-code - 如何将新网页添加到 VSC liveserver?
- python - 如何在 Python 中使用 lxml 查找嵌套的 html 元素?
- javascript - 即使 Gremlin 查询无法完成,如何返回遍历的所有步骤?
- reactjs - Redux-React-Firebase 模拟测试