【问题标题】:sql does not order by order by with multiple variables and inner join in MYSQLsql不按顺序排序,在MYSQL中使用多个变量和内部连接
【发布时间】:2020-10-18 00:51:43
【问题描述】:

我在 sql 中有以下语句,用于显示我的 mysql 数据库中的数据。

SELECT o.*
     , u.picture
     , u.socialid 
  FROM operaciones o
  JOIN users u
    ON o.id_usuario = u.socialid
   AND o.provincia = 'Cordoba' 
   AND o.divisa = 'Dolares' 
   AND o.fecha_op IN('27-06-20','26-06-20','25-06-20') 
 WHERE o.tipo = 'compra' 
 ORDER 
    BY o.cotizacion DESC
     , o.fecha DESC

问题是它返回的数据杂乱无章,例如“cotizacion”部分是从高到低,它返回的都是混合的,我已经看到了几个问题但我无法解决。

【问题讨论】:

  • 请提供样本数据和期望的结果。你有一个ORDER BY,大概就是你想要的。
  • Order by子句可以被其他的order by column影响,请给出insert和create table脚本来分析。
  • 始终使用日期数据类型存储日期
  • 请在代码问题中给出minimal reproducible example--cut & paste & runnable code,包括最小的代表性示例输入作为代码;期望和实际输出(包括逐字错误消息);标签和版本;明确的规范和解释。给出尽可能少的代码,即您显示的代码可以通过您显示的代码扩展为不正常的代码。 (调试基础。)对于包含 DBMS 和 DDL(包括约束和索引)和输入为格式化为表的代码的 SQL。 How to Ask 暂停总体目标的工作,将代码砍到第一个表达式,没有给出你期望的内容,说出你期望的内容和原因。
  • use text, not images/links, for text--including tables & ERDs。仅将图像用于无法表达为文本或增强文本的内容。在图像中包含图例/键和说明。 “我已经看到了几个问题,但我无法解决它|”不是“报告研究”并且没有帮助-每个人都认为他们进行了合理的研究,但事实并非如此。 (“几个”什么都不是。)报告您在 Google 上搜索的内容,包括手册中的内容,并说明您学到的相关内容以及为什么没有帮助。

标签: mysql sql join select sql-order-by


【解决方案1】:

您当前的结果使cotizacion 看起来像存储为字符串,而不是数字。就字符串而言,'3' 大于'22'(因为'3' 大于'22' 的第一个字符,即'2')。您应该修复您的数据模型,并将数字存储为数字。

与此同时,您可以像这样强制进行数字转换:

ORDER BY 0 + o.cotizacion DESC, o.fecha DESC

【讨论】:

    猜你喜欢
    • 2012-07-16
    • 2016-07-19
    • 2018-05-06
    • 2017-07-31
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 2011-05-03
    相关资源
    最近更新 更多