我正在尝试以“orderindex”组织查询输出,以便在使用 mysql 的 php 函数循环中正确显示列表。
目前我的 SQL 查询是这样的:
SELECT * FROM (SELECT NewCustInfo.Driver, SUBSTRING_INDEX(NewCustInfo.Driver, '/', -1) AS orderindex, SUBSTRING_INDEX(NewCustInfo.Driver, '/', 1) AS thedriver, NewCustInfo.id,NewCustInfo.Accomplished
FROM NewCustInfo WHERE NewCustInfo.Driver REGEXP 'Test123/' AND NewCustInfo.Accomplished='0' ORDER BY orderindex DESC) DUMMY_ALIAS1
UNION ALL
SELECT * FROM (SELECT PickupSlip.Driver, SUBSTRING_INDEX(PickupSlip.Driver, '/', -1) AS orderindex, SUBSTRING_INDEX(PickupSlip.Driver, '/', 1) AS thedriver, PickupSlip.id,PickupSlip.Accomplished
FROM PickupSlip WHERE PickupSlip.Driver REGEXP 'Test123/' AND PickupSlip.Accomplished='0' ORDER BY orderindex DESC) DUMMY_ALIAS2
UNION ALL
SELECT * FROM (SELECT DeliverySlip.Driver, SUBSTRING_INDEX(DeliverySlip.Driver, '/', -1) AS orderindex, SUBSTRING_INDEX(DeliverySlip.Driver, '/', 1) AS thedriver, DeliverySlip.id,DeliverySlip.Accomplished
FROM DeliverySlip WHERE DeliverySlip.Driver REGEXP 'Test123/' AND DeliverySlip.Accomplished='0' ORDER BY orderindex DESC) DUMMY_ALIAS3
我意识到这是按 SELECT 排序,而不是整个查询。有没有办法对所有 3 个 SELECTS 的完整结果进行排序?
例如将 3 个选择转换为一个变量,然后以某种方式将它们连接成一个列表,然后使用 ORDER BY 显示?
最佳答案
根据 UNION 上的 mysql 语法,在最后一个 select 之后放置一个 order by 子句:
(SELECT a FROM t1 WHERE a=10 AND B=1)
UNION
(SELECT a FROM t2 WHERE a=11 AND B=2)
ORDER BY a
关于php - MySQL查询返回结果无顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33744176/