【问题标题】:ORDER BY not working properly with UNION in MySQLORDER BY 在 MySQL 中无法与 UNION 一起正常工作
【发布时间】:2021-07-11 13:09:06
【问题描述】:

我有 2 个表 t1 和 t2 如下

我想从带有 UNION 的两个表中选择结果并按 qty 列排序。我写的查询是

(SELECT * FROM t1)
UNION ALL
(SELECT * FROM t2)
ORDER BY qty ASC;

这给了我以下结果

有人能告诉我这里出了什么问题吗?根据查询,我应该得到按升序排序的 qty 列。我也试过了

(SELECT * FROM t1
UNION ALL
SELECT * FROM t2)
ORDER BY qty ASC;

也没有运气。如果我使用 id 或 item 进行排序,它工作得非常好。这真是令人沮丧。请帮忙。

【问题讨论】:

标签: mysql database union union-all


【解决方案1】:

Sorting varchar field numerically in MySQL 可能重复

试试

(SELECT * FROM t1
UNION ALL
SELECT * FROM t2)
ORDER BY CAST(qty as SIGNED INTEGER) ASC;

【讨论】:

  • 非常感谢@Evangelica,这很有效。几个小时以来,我一直在为此烦恼,但无法弄清楚这个问题。显然这是我提供的测试数据,但我的真实查询非常庞大且复杂,因此不确定问题出在哪里。结果发现我的联合中的第二个表具有 varchar 数据类型,而第一个表具有 INT 数据类型。
猜你喜欢
  • 2018-02-15
  • 2022-11-12
  • 2021-08-26
  • 2023-02-06
  • 2014-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多