【问题标题】:UNION function mysql not accepting ORDER BY dateUNION函数mysql不接受ORDER BY日期
【发布时间】:2022-11-11 14:23:10
【问题描述】:

我尝试使用此查询提取数据:

select fnl_res.id, fnl_res.business_name, fnl_res.owner_name from (
(select b_infos.id, b_infos.business_name, b_infos.owner_name, orders.date from b_infos 
    inner join orders on b_infos.id = orders.businessId) 
UNION
( select b_infos.id, b_infos.business_name, b_infos.owner_name from b_infos 
    inner join expenses_logs on b_infos.id = expenses_logs.businessId ) ) as fnl_res

它工作正常,但是当我在每个联合上添加列日期和按日期排序时:

select fnl_res.id, fnl_res.business_name, fnl_res.owner_name, orders.date from (
(select b_infos.id, b_infos.business_name, b_infos.owner_name, orders.date from b_infos 
    inner join orders on b_infos.id = orders.businessId ORDER BY orders.date) 
UNION
( select b_infos.id, b_infos.business_name, b_infos.owner_name, expenses_logs.date from b_infos 
    inner join expenses_logs on b_infos.id = expenses_logs.businessId  ORDER BY expenses_logs.date ) ) as fnl_res

我收到了这个错误: 错误代码1114:表已满!

已经研究过这个错误说我试图插入但我只是在桌子上选择

有什么我需要考虑的吗?

【问题讨论】:

  • 您的问题标题提到“按日期排序”,但这不会出现在您的查询中。请更正标题或查询,使其对齐。此外,请包含minimal reproducible example,最好是作为在线查询游乐场的链接,例如sqlfiddle.com 等。
  • 抱歉忘了包括它已经更新的谢谢
  • 子查询内部没有限制的 ORDER BY 是没用的。检查服务器上的磁盘是否已满 df -h ,同时检查 tmp_table_sizemax_heap_table_size

标签: mysql sql


【解决方案1】:

在 MySQL 中,order by 可能不会出现在子查询中。将整个查询包装为子查询并将order by 应用于:

select *
from (
  select
    b_infos.id, b_infos.business_name, b_infos.owner_name, orders.date
    from b_infos 
    join orders on b_infos.id = orders.businessId 
  union
  select
    b_infos.id, b_infos.business_name, b_infos.owner_name, expenses_logs.date
    from b_infos 
    join expenses_logs on b_infos.id = expenses_logs.businessId
) x
order by 4 -- order by the 4th column

请注意,如果没有 where 子句,您将返回每一行,可能会占用内存并导致错误。考虑一些过滤,也许where orders.date > '2022-10-13'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-20
    • 2014-05-30
    • 2016-11-22
    • 1970-01-01
    • 2014-10-03
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多