MySQL 排序依据不一致

标签 mysql sql

我在 sql 中有一段代码,试图按 trades.id 字段的数字顺序获取投资组合、某些交易的股价。

问题是下面代码中的两个值都必须按数字顺序返回,以便根据权重计算某种类型的分配。

但是,

投资组合相对于trades.id字段的返回顺序如下

0,1,2,3,4,5,6...

从“股”派生的“权重”的返回顺序如下

1,2,3,4,5,6....0

它们的顺序都应该是0,1,2,3,4,5,6

PS。不是我的代码,但我必须修复它才能使应用程序正常工作

SELECT 
    'O' AS Hint,
    GROUP_CONCAT(trades.id
        ORDER BY trades.id) AS ID,
    GROUP_CONCAT( (trades.Portfolio)
        ORDER BY trades.id) AS Portfolio,
    Ticker,
    Direction,
    FORMAT(SUM(Shares), 0) AS 'Shares',
    FORMAT(SUM(Shares), 0) AS 'Original Shares',
    Price,
    Broker AS Broker1,
    Commission,
    GROUP_CONCAT(FORMAT

    (trades.Shares/ 
    (SELECT SUM(Shares) FROM db.Trades WHERE id IN ('102370' , '102371','102372','102373','102374','102375','102376','102377','102380','102400')),12)) AS Weights,


    Issuer
FROM
    db.Trades
WHERE
    id IN ('102370' , '102371',
        '102372',
        '102373',
        '102374',
        '102375',
        '102376',
        '102377',
        '102380',
        '102400')
        AND is_deleted = '0'

GROUP BY Ticker , Direction , Price , Commission
ORDER BY trades.id

最佳答案

我刚刚修复了该错误。包装股票group_concat方法中的代码缺少order by trades.id

(trades.Shares/ 
       (SELECT SUM(Shares) 
             FROM db.Trades WHERE id IN 
 ('102370''102371','102372','102373','102374','102375','102376','102377','102380','102400')),12) 
 order by trades.id) AS Weights   -- <- here

关于MySQL 排序依据不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52783894/

相关文章:

sql - 选择最大不同值

sql - 对象变量的 SSIS 计数?

mysql - 从一行中选择与 TestType、UserID 不同的值,并将该值设置为 Final_Test_Score 列和 GROUP BY UserID

mysql - 如何防止表中的重复记录插入忽略在这里不起作用

mysql - 如何解决activeMQ msyql cluster get Attempting to acquire the Exclusive Lock错误?

java - 尝试在 Java 中更新 MySQL 数据库时数组索引越界异常

mysql - 按标题高效地从 Wiki 转储中获取文章

mysql - 如何从 mysql 表中删除 auto_increment

c# - C# 应用程序中的 SQL 查询

mysql - 将一个 SQL 查询的结果添加到另一个查询