php - MySQL查询返回结果无顺序

标签 php mysql select union

我正在尝试以“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/

相关文章:

php - 如何在 Java Script 和 PHP 中获取动态添加的文本框的值

mysql - 结果被截断,一个 MYSQL 错误?

MYSQL 不使用创建的索引

python - 将百万和千位数的数字转换为字符串格式

sql - 如何在 MySQL 的左连接中获取关联行的计数?

php - 500(内部服务器错误)与 Laravel 和 Docker

php - 使用输入和输出参数创建 MySQL 存储过程

javascript - 仅确认代码的其他部分

c++ - 流转换过滤器 : ciphertext length is not a multiple of block size?

sql - SQL如何选择最近的日期项目